如何在Windows上运行ssh-add?


78

我正在跟踪#335部署到VPS,并且在剧集即将结束时,我们需要运行ssh-add以使服务器可以访问github存储库。

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

我知道要运行ssh以访问远程服务器,可以使用Putty。但是此命令需要在本地运行,我确实知道如何使用Putty该命令。


1
其实。不用了 使用Pageant(Putty的ssh-agent)...如果您确实想以Unix / Linux方式进行操作,则需要安装gitbash,mingw或somethig。有了Pageant,您将不必。
svin83

Answers:


86

可以为Windows安装Git并随后运行ssh-add

步骤3:将密钥添加到ssh-agent

要将ssh-agent程序配置为使用SSH密钥,请执行以下操作:

如果您已安装Windows的GitHub,则可以使用它来克隆存储库,而不用处理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. 将SSH密钥添加到ssh-agent:

    ssh-add ~/.ssh/id_rsa
    

10
如何运行第一行cd ~/.ssh?我们在Windows中,是不是应该像'C:/'这样的东西?
cqcn1991

14
似乎为我工作:我打电话给D:\>"c:\Program Files\Git\cmd\start-ssh-agent.cmd"
BernhardDöbler'18

9
eval:术语“ eval”不能识别为cmdlet,函数,脚本文件或可运行程序的名称。
Chutipong Roobklom

8
除了Git Bash之外,这个答案也完全是错误的,它的复制/粘贴内容也是如此。
布拉德(Brad)

9
@BernhardDöblerstart-ssh-agent.cmd应该是正确的答案!非常感谢!
惊人的

169

使用git的start-ssh-agent的原始答案

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

确保id_rsa文件在文件夹中c:\users\yourusername\.ssh

如果还没有,请重新启动命令提示符,然后运行start-ssh-agent。它将找到您id_rsa并提示您输入密码

Update 2019-如果您使用的是Windows 10,则是更好的解决方案: OpenSSH作为Windows 10的一部分提供,我认为从cmd / powershell中使用SSH更容易。与我以前的解决方案不同,它也不依赖于安装git。

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

  2. Services从开始菜单打开

  3. 向下滚动到OpenSSH Authentication Agent>右键单击>属性

  4. 将启动类型从禁用更改为其他三个选项中的任何一个。我有我的Automatic (Delayed Start)

  5. 打开cmd并键入where ssh以确认上面列出的路径在System32中。矿山安装在C:\Windows\System32\OpenSSH\ssh.exe。如果不在列表中,则可能需要关闭并重新打开cmd。

完成这些步骤后,ssh-agent,ssh-add和所有其他ssh命令现在应该可以从cmd运行。要启动代理,您只需键入即可ssh-agent

  1. 可选的步骤/故障排除:如果使用git,则应将GIT_SSH环境变量设置为where ssh之前运行的输出(例如C:\Windows\System32\OpenSSH\ssh.exe)。这是为了防止正在使用的ssh版本(以及添加/生成密钥的版本)与git内部使用的版本之间的不一致。这样可以避免与此类似的问题

关于此解决方案的一些好处:

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

希望这可以帮助


30
start-ssh-agent。一个小时的视线之后,我所需要的就是这些。谢谢!
塔尔·科伦

2
我认为start-ssh-agent确实可以使用PowerShell。但是,我以管理员身份运行PowerShell,所以这可能是关键。
Trevor

1
对我来说,Windows服务“ OpenSSH身份验证代理”已禁用,这对您有帮助,谢谢
petrumo '19

谢谢!我需要设置GIT_SSH环境变量以将Git指向Windows使用的OpenSSH,而不是其内部的。
Kirill Osenkov,

1
任何想法如何将密钥文件的名称更改为id_rsa以外的名称?
Krzysztof Krzeszewski

10

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

vi ~/.ssh/config

Host example.com
IdentityFile ~/.ssh/example_key

3
我在其他所有评论中都做了所有操作,但这最终使它对我有用。我用github.com替换了example.com,因为我无法克隆或推送或其他任何东西(我收到了Git:权限被拒绝(公钥)错误)
namklabs

人。我在Windows 10上使用cmd,这是唯一允许我使用非默认rsa密钥名称的东西。我无法从OpenSSH获得ssh-add的支持,也无法从git ssh工具获得ssh-add的支持。制作此配置文件最终对其进行了排序。
杰夫·戴维斯

10

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

start-ssh-agent.cmd

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

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

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

9

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


这应该更高。适用于Powershell或CMD。
伊恩·史密斯

无法将“ start-ssh-agent”识别为内部或外部命令
TheKitMurkit

6

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

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> 

2
是! 做C:\Program Files\Git\usr\bin路径终于解决了!Everone在\Gitusr \ bin中执行所有其他文件夹操作,但不是usr \ bin
Noitidart

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.