步骤 1:生成 SSH 密钥
1.在命令行中输入 ssh-keygen。(如果在命令窗口中出现错误,请检查 C:\Program Files\Git\usr\bin 是否是路径的一部分)该命令会提示您输入一个文件来保存密钥
按回车键接受默认密钥和路径 /c/Users//.ssh/id_rsa。
出现提示时输入密码并重新输入。
该命令使用其公钥和私钥创建您的默认身份。
2.配置tortoise-git
加载之前生成的 ssh 密钥(id_rsa)。它会提示您选择文件。(ssh 密钥的默认路径为 C:\Users\.ssh)
加载时会要求输入密码。输入之前提供的密码。完成此步骤后,Putty 将加载证书。
证书加载完成后,单击“保存私钥”按钮。系统将提示您选择要保存文件的文件夹。最好将其保存在与 ssh 密钥文件夹相同的文件夹中(C:\Users\.ssh)。同时指定文件名。
现在您必须使用生成的密钥文件配置 TortoiseGit。右键单击 repo 文件夹,选择 TortoiseGit>Settings
在设置屏幕中选择 Git > Remote
在远程屏幕中,选择原点..它将填充 URL 和其他字段。
单击 Putty Key 字段对应的省略号,然后选择使用 puttygen 生成的私钥文件。
私钥的文件格式为
----开始 RSA 私钥------
xxxxxxyyxyyxyxyxy
错误是
无法加载私钥(无法打开文件)
答案1
如果我理解正确的话,您并没有使用puttygen
它来创建密钥对,而是使用ssh-keygen
密码生成密钥对,然后将该私钥加载到 Putty 中并将其保存为Putty.ppk
并出现错误Couldn't load Private Key (cannot open file)
。
id_rsa
您创建的私钥()是什么格式的?
如果你在文本文件中打开它,第一个文件类似于:
-----BEGIN RSA PRIVATE KEY-----
或者看起来像这样:
ssh-rsa AWEdxRASFLMAF......
这很可能是您加载公钥而不是私钥以另存为 时出现的问题.ppk
。您显示的屏幕截图有 2 个文件: id_rsa
和,但其中一个是私钥文件,另一个是公钥。如果没有显示文件扩展名,则可能是您选择了公钥。尝试通过选择上面屏幕截图中带有时间戳的文件id_rsa
来重新导入密钥。id_rsa
05-03-2018 12:36
验证该文件的第一行是否
-----BEGIN RSA PRIVATE KEY-----
在你这样做之前。
答案2
答案3
我收到了同样的消息,对我来说,问题是我有两个版本的 putty。我正在使用 git 扩展,可以安装它来包含 putty(它是 32 位版本的 putty,位于 git 扩展程序文件目录中)。我也自己安装了 putty。
我使用 64 位 putty 安装生成了密钥,并尝试将该密钥用于 32 位版本。我通过在 git 扩展选项中更改 putty 路径解决了该问题。
答案4
在某个版本的 puttygen 中,我遇到了完全相同的错误消息(“文件意外结束”)。在最新版本 (0.76) 中,puttygen 无限期地挂起,试图导入我的密钥,我不得不终止该进程。
由于我找不到任何对我有帮助的答案,而且我是一名 C++ 开发人员,所以我决定调试 puttygen,因为源代码可用(使用 0.76)。
对我来说,问题是我的私钥末尾有一个多余的空格, 和puttygen无法处理!
因此,我的私钥文件的最后一行不是以
“ -----END RSA PRIVATE KEY-----
“
最终
“ -----END RSA PRIVATE KEY-----
“
Puttygen 被编程为持续从文件中扫描更多关键信息,直到找到以“ -----END
”开头并以“ PRIVATE KEY-----
”结尾的行,并且它根本不能正确处理 EOF(文件结束)!
我希望这对某些人有帮助,这个问题让我抓狂了!