如何在Windows上运行ssh-add?

时间:2013-09-08 11:23:50

标签: windows ssh

我正在关注#335 Deploying to a VPS ,并且在剧集结束时,我们需要运行ssh-add以授予服务器访问github repo的权限。

问题是如何在Windows中运行它?需要安装什么?

我知道要运行ssh来访问远程服务器,我可以使用Putty。但是这个命令需要在本地运行,我知道如何使用Putty来执行此操作。

12 个答案:

答案 0 :(得分:52)

原始回答

确保已安装Git并在PATH中包含git的cmd文件夹。例如,在我的计算机上,git的cmd文件夹的路径为C:\Program Files\Git\cmd

确保您的id_rsa文件位于c:\users\yourusername\.ssh

文件夹中

如果尚未重启命令提示符,请运行start-ssh-agent。它会找到您的id_rsa并提示您输入密码

更新2019年 - 如果您使用的是Windows 10,这是一个更好的解决方案: OpenSSH作为Windows 10的一部分提供,在我看来,这使得使用cmd / powershell的SSH变得更加容易。与我之前的解决方案不同,它也不依赖于安装git。

  1. 从开始菜单中打开Manage optional features,确保列表中有Open SSH Client。如果没有,您应该可以添加它。

  2. 从开始菜单

  3. 打开Services
  4. 向下滚动到OpenSSH Authentication Agent>右键单击>特性

  5. 将“启动”类型从“禁用”更改为任何其他3个选项。我已将我的设置为Automatic (Delayed Start)

  6. 打开cmd并键入where ssh以确认列出的顶部路径位于System32中。我的安装在C:\Windows\System32\OpenSSH\ssh.exe。如果它不在列表中,您可能需要关闭并重新打开cmd。

  7. 一旦您按照这些步骤操作,ssh-agent,ssh-add和所有其他ssh命令现在应该可以在cmd中运行。要启动代理,只需键入ssh-agent

    1. 可选步骤/疑难解答:如果您使用git,则应将GIT_SSH环境变量设置为之前运行的where ssh输出(例如C:\Windows\System32\OpenSSH\ssh.exe })。这是为了阻止你正在使用的ssh版本(以及你的密钥被添加/生成)和git在内部使用的版本之间的不一致。 This should prevent issues that are similar to this
    2. 关于此解决方案的一些好处:

      • 每次重新启动计算机时都不需要启动ssh-agent
      • 您添加的身份(使用ssh-add)将在重新启动后自动添加。 (它适用于我,但您可能需要在c:\ Users \ User.ssh文件夹中配置文件)
      • 你不需要git!
      • 您可以将任何rsa私钥注册到代理。另一个解决方案只会获取名为id_rsa
      • 的密钥

      希望这有帮助

答案 1 :(得分:33)

可以安装Git for Windows,然后运行ssh-add

Step 3: Add your key to the ssh-agent

  

配置ssh-agent程序以使用SSH密钥:

     

如果安装了GitHub for Windows,则可以使用它来克隆存储库而不处理SSH密钥。它还附带了Git Bash工具,这是在Windows上运行git命令的首选方法。

     
      
  1. 确保已启用ssh-agent:

         
        
    • 如果您使用的是Git Bash,请启用ssh-agent:

      # start the ssh-agent in the background
      ssh-agent -s
      # Agent pid 59566
      
    •   
    • 如果您正在使用其他终端提示,例如msysgit,请启用ssh-agent:

      # start the ssh-agent in the background
      eval $(ssh-agent -s)
      # Agent pid 59566
      
    •   
  2.   
  3. 将SSH密钥添加到ssh-agent:

    ssh-add ~/.ssh/id_rsa
    
  4.   

答案 2 :(得分:10)

如果您不使用GitBash,则需要使用此命令启动ssh-agent

start-ssh-agent.cmd

这被残酷地掩埋在评论中,很难找到。这应该被接受。

如果未设置ssh代理,则可以以管理员身份打开PowerShell并将其设置为手动模式

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

答案 3 :(得分:4)

要在Windows上运行ssh-add,可以使用choco install git安装git。一旦ssh-add被添加为PATH变量并且命令提示符已重新启动,就会识别C:\Program Files\Git\usr\bin命令:

C:\Users\user\Desktop\repository>ssh-add .ssh/id_rsa
Enter passphrase for .ssh/id_rsa:
Identity added: .ssh/id_rsa (.ssh/id_rsa)

C:\Users\user\Desktop\repository> 

答案 4 :(得分:4)

我以前也有类似情况。在命令提示符下,键入“ start-ssh-agent”,瞧! ssh-agent将启动。如果要求输入密码,则输入密码。

答案 5 :(得分:2)

2021 答案

微软近年来改进了 ssh-key 支持。现在有一个功能齐全的“服务”可以运行。

来自https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement

在(管理员)Powershell 中:

# By default the ssh-agent service is disabled.
Get-Service -Name ssh-agent | Set-Service -StartupType Automatic

Start-Service ssh-agent

然后从任何用户 shell:

ssh-add path/to/.ssh/id_rsa

答案 6 :(得分:1)

Windows的Git GUI有一个基于窗口的应用程序,允许您粘贴ssh密钥和回购URL等的位置:

pubnub docs

答案 7 :(得分:1)

eval "$(ssh-agent -s)" 

ssh-add C:/Users/Dell/.ssh/gitlab (your path)

git clone repo_link

答案 8 :(得分:0)

如果您尝试设置将git与ssh结合使用的密钥,则始终可以选择为身份文件添加配置。

vi ~/.ssh/config

Host example.com
IdentityFile ~/.ssh/example_key

答案 9 :(得分:0)

以下解决方案解决了我的问题。请务必在管理员模式下运行您的 powershell 并执行以下操作:

  1. 检查ssh-agent的当前状态:"Get-Service | select -property name,starttype" --> 应该是Disabled

  2. 设置新类型:“Set-Service -Name ssh-agent -StartupType Manual”

  3. 启动它:“Start-Service ssh-agent”

  4. 像以前一样简单地添加您的密钥:“ssh-add”(例如 ssh-add 密钥文件)

我找到了解决方案 here

答案 10 :(得分:0)

您应该启动 ssh 代理并使用推荐命令 "ssh-keygen -t rsa -b 4096 - C "your email" 生成 ssh 密钥

答案 11 :(得分:0)

我刚刚在 Github 上设置了 SSH 身份验证。使用Putty安装的“Pageant”即可。

您需要将选美添加到您的 Windows 启动文件夹,以便它在 Windows 启动时启动(或每次在您需要进行身份验证之前启动它)

blog post 很好地解释了使用 Putty 和 Pageant 在 Windows 上配置 Github 所需执行的所有操作。