已解决,请参阅最后的编辑
我有一个 SourceForge 存储库,并且在那里正确设置了我的 SSH 密钥。它工作正常。但是当我使用 TortoiseHG 将我的修改推送到存储库时,我一直被要求输入 PPK 的密码(因为我保护了它)。
我告诉 Mercurial 我的 PPK 是这样的:
[ui] ssh = tortoiseplink.exe -ssh -i "c:\Users\my_user\SSH\my_user.ppk"
但它一直在用 PPK 的密码困扰我。我知道 Mercurial 的 KeyRing 扩展,但它是否适用于 PPK?
然后...
TortoiseHG 有这个选美工具。显然,您通过指定 -agent 来告诉 TortoiseHG 使用它,如下所示:
[ui] ssh = tortoiseplink.exe -ssh -i "c:\Users\my_user\SSH\my_user.ppk" -agent
我在 Pageant 中添加了我的密钥,但是当我与 TortoiseHG 同步时,它仍然要求输入我的 PPK 的密码,即使我在 Pageant 中添加 PPK 时已经提到过。
让我烦恼的另一件事是,Pageant 在程序重新启动时“忘记”了所有键。所以有点'没用。
有什么办法可以使用 KeyRing 扩展将我的 PPK 添加到 TortoiseHG 并将密码存储在某个地方?
如果没有办法解决这个问题,我想我只会使用不受保护的 PPK,就是这样......
后期编辑:
这是我尝试通过 TortoiseHG 同步工具进行推送时得到的调试输出,配置如上。
% hg --repository C:\Projects\MyProject push --debug ssh://echysttas@hg.code.sf.net/p/myproject/code
pushing to ssh://echysttas@hg.code.sf.net/p/myproject/code
running "c:\Program Files\TortoiseHg\TortoisePlink.exe" -agent echysttas@hg.code.sf.net "hg -R p/myproject/code serve --stdio"
sending hello command
sending between command
在这里我收到一个密码请求,我取消了它,因为我不想继续重复我的密码
远程 hg 没有合适的响应 [命令返回代码 255 Mon Nov 19 20:43:14 2012]
后期编辑2:
我注意到一些示例使用 plink.exe 而不是 TortoisePlink.exe。好吧,我也尝试使用 plink.exe(直接来自 Putty 网站)。这产生了可喜的结果......
sending hello command
sending between command
remote: Passphrase for key "rsa-key-20121118":
remote: Passphrase for key "rsa-key-20121118":
但后来,它卡在了这里。
稍后编辑 3
非常有趣的发现::- D。
它卡住了,因为我从非提升的 Explorer 调用 TortoiseHG Sync 但我从提升的 Total Commander开始了 Pageant 。我在我的 Windows 7 上使用 UAC,这导致了问题。
如果 Pageant 是从管理员权限 Total Commander 运行的,那么 TrtoiseHG Sync 也必须从那里启动!如果这样做,它的工作原理!如果我从非提升的资源管理器启动 Pageant 并且我也从那里进行同步,它也可以工作。
完毕!
懒惰的獾我仍然将答案授予你,因为你很懒惰,你证明了自己的兴趣并帮助了我很多。虽然“它可以在我的机器上运行”并不是真正的答案,但它确实让我思考,你的许多文字和描述值得那个光荣的绿色复选标记,是吗?:D。