使用 (Tortoise)Git for Windows 进行密钥处理的实现让我感到困惑。据我所知,您可以使用
ssh.exe
(gits 自己的 ssh 程序)来实现,然后您可以在“伪造”主目录中的 ssh_config
中为每个主机选择一个 ssh 密钥。对我来说,这并不适用,因为我有多个使用不同密钥但主机相同的 Bitbucket 帐户。
然后就有了使用方法
TortoiseGitPlink
。您基本上使用腻子生成的密钥设置选美并让 TortoiseGit 使用该密钥 - 环境变量SSH_GIT
设置为您的 TortoiseGitPlink.exe)。
现在我的问题如下:我刚刚在 GitBash 中使用
ssh-keygen -t rsa -f ~/.ssh/rsa_key
命令创建了一个带有默认选项的 ssh2 rsa 密钥。我尝试使用其 GUI 将此文件加载到 pageant.exe
中。我得到了错误:Couldn't load this key (OpenSSH-SSH-2 private key)
。
这把钥匙有什么问题?在 GitBash 中制作,它应该遵守所有标准的 openSSH 准则。 PuTTY 密钥和 openSSH 密钥存在差异是否正确?
Pageant 只能加载 PuTTY 格式的密钥 (
.ppk
)。
如果您尝试加载不同格式的密钥,PuTTY 工具仍可识别,您会收到上述错误消息:
无法加载此密钥(OpenSSH-SSH-2 私钥)
您需要使用PuTTYgen 将密钥 从OpenSSH 格式转换为PuTTY 格式。如果 Pageant 识别文件格式,PuTTYgen 可以转换它。
.ppk
格式保存私钥;.ppk
格式的私钥加载到Pageant。或者更简单,使用 PuTTYgen 直接以 PuTTY 格式创建密钥,而不是使用
ssh-keygen
.
查看 PuTTY 愿望清单,因为它有自己的密钥格式:
https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats.html
请注意,我相信 SSH-2 私钥文件格式没有标准。
我现在还有问题。 变量 SSH_GIT 被设置为 TortoiseGitPlink.exe。 我用 git bash 做了一个密钥对
ssh-keygen -o
我用 PUTTYGen 加载了密钥并将其转换为 *ppk 版本。将密钥保存在 tortioseGit 设置中并将公钥保存到我的 github 帐户,但我仍然收到输入我的凭据的请求,之后我的推送被拒绝。 有趣的是,在我的笔记本电脑上它可以工作。我很确定我在笔记本电脑上做了所有事情。
这是因为 AutoLoad Putty Key 复选框在 TortoiseGit->Pull... 弹出窗口中被选中(应该保持选中状态)。但是在对应路径下找不到putty私钥。可能是由于文件以某种方式被删除或移动到其他位置。
解决方案是设置 putty 私钥的正确位置或删除现有的私钥路径。为此,请单击上面的“管理遥控器”链接。这将在弹出窗口后打开。一步一步来。设置新路径或正确路径后,单击“应用”,然后单击“确定”。
如果您收到错误消息,无法加载私钥(无法识别的密码名称),您需要先从私钥中删除密码,然后才能进行转换。
有人写了一篇文章描述如何做到这一点here.