Pageant拒绝加载使用GitBash生成的SSH-2密钥

atr*_*pes 41 plink openssh pageant git-bash private-key

用(Tortoise)Git for Windows实现密钥处理让我很困惑.据我所知,你可以使用ssh.exe(gits自己的ssh程序)实现,然后你可以ssh_config在'faked'home dir中为每个主机选择一个ssh密钥.对我来说,这不是真的适用,因为我有多个Bitbucket帐户使用不同的密钥,但所有相同的主机.

然后有一种方法可以使用TortoiseGitPlink.你基本上用putty生成的密钥设置了pageant,让TortoiseGit使用那个 - 将环境变量SSH_GIT设置为你的TortoiseGitPlink.exe.

现在我的问题如下:我刚刚使用ssh-keygen -t rsa -f ~/.ssh/rsa_keyGitBash中的命令创建了一个带有默认选项的ssh2 rsa键.我尝试pageant.exe使用它的GUI 加载这个文件.我收到了错误:Couldn't load this key (OpenSSH-SSH-2 private key).

这把钥匙有什么问题?在GitBash中制作它应该遵守所有标准的openSSH指南.puTTY键和openSSH键有区别是否正确?

Mar*_*ryl 77

Pageant只能以PuTTY格式(.ppk)加载密钥.

如果您尝试以不同的格式加载密钥,仍然可以通过PuTTY工具识别,则会收到上述错误消息:

无法加载此密钥(OpenSSH-SSH-2私钥)

您需要使用PuTTYgen将密钥从OpenSSH格式转换为PuTTY格式.如果Pageant识别出文件格式,PuTTYgen可以转换它.

  • 运行PuTTYgen;
  • Load以OpenSSH格式加载私钥;
  • 保存私钥以保存私钥.ppk格式;
  • 现在,您可以将.ppk格式的私钥加载到Pageant.

或者更简单,使用PuTTYgen直接以PuTTY格式创建密钥,而不是使用ssh-keygen.


请参阅PuTTY愿望清单,原因是它有自己的密钥格式:https:
//www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats.html

请注意,我认为SSH-2私钥文件格式没有标准.

  • 辉煌.稍微偏离主题,但SourceTree也会出现此问题.我最终来自https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git.从SourceTree中,您可以使用_Tools_> _Create或导入SSH Keys_> _Load_来导入SSH-2私钥,并使用_Save Private Key_按钮将其导出为.ppk(这是Martin提到的PuTTY Key Generator工具).我仍然对UI有一些困难,但我现在至少可以按照这些步骤提交命令行https://confluence.atlassian.com/pages/viewpage.action?pageId=302811860 (12认同)
  • 最后...!我只需打开PuTTY密钥生成器程序,单击`import`然后单击`保存私钥`.这就是我需要知道的全部内容.感谢您提供线索,文件必须转换! (5认同)

Key*_*r00 22

如果显示此错误,PuTTY无法理解id_rsa私钥: 在此输入图像描述

您需要将私钥转换为.ppk(私钥格式).

  1. 打开PuTTY密钥生成器(开始 - >搜索'puttygen')
  2. 您需要导入RSA私钥.为此,请打开"转化"菜单>"导入密钥". 在此输入图像描述
  3. 选择要转换的RSA私钥. 在此输入图像描述
  4. 单击"保存私钥".请注意,您也可以将其另存为其他格式. 在此输入图像描述
  5. 然后保存为'id_rsa.ppk' 在此输入图像描述
  6. Open Pageant - PuTTY身份验证代理(如果尚未打开) 在此输入图像描述
  7. 点击"添加密钥"
  8. 选择您的融合私钥. 在此输入图像描述
  9. 如您所见,PuTTY现在在"Pageant Key List"中识别它. 在此输入图像描述

  • @Andy:同意.希望它能在不久的将来更好地集成.问候. (2认同)
  • 请注意,扩展名应为`.ppk`而不是`.pkk`. (2认同)
  • 不适用于ed25519密钥:无法加载私钥(无法识别的密码名称) (2认同)
  • 很棒的答案。就像上面的烦恼一样,我无法导入我的私钥。因此,我使用Putty Gen来创建密钥(而不是按照gitlab.com的建议通过git bash来创建密钥)。然后只需使用此密钥即可。 (2认同)