2

已解决,请参阅最后的编辑

我有一个 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。

4

1 回答 1

2

好吧,我可以与选美一起工作而无需再被询问一次密码

我的 SSH 线路

ssh = "c:\Program Files\_Tools\TortoiseHg\TortoisePlink.exe"

并运行 Pageant(使用加载的私钥 /PuTTY-User-Key-File/)将使我能够与 repo 进行通信而无需重新身份验证

注意 1:密钥环对您的情况根本没有帮助,使用纯 ssh 连接(ssh 或 plink)调试选美功能

注意 2:要使用密钥(仅需要密码)启动 Pageant,您可以使用扩展命令行

如果您在 Pageant 命令行中提供它们,那么 Pageant 可以在启动时自动加载一个或多个私钥。您的命令行可能如下所示:

C:\PuTTY\pageant.exe d:\main.ppk d:\secondary.ppk

如果密钥是加密存储的,Pageant 将在启动时请求密码。

如果 Pageant 已经在运行,则此语法会将键加载到现有的 Pageant 中。

添加在

尝试使用我当前的 TortoiseHG 2.6 (XP SP3 x86) 的 ssh 设置推送,Mercurial repo

c:\TEMP\Fiver>hg push sf
pushing to ssh://bigbadger@hg.code.sf.net/u/bigbadger/code
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 7 changesets with 39 changes to 19 files
remote: <Repository /hg/u/bigbadger/code> refresh queued.

本地仓库 hgrc

[paths]
...
sf = ssh://bigbadger@hg.code.sf.net/u/bigbadger/code

已加载到 Pageant 中的私钥,在 SF 上注册的公钥,在我的个人资料中

Mercurial.ini(相关部分)

[ui]
merge = <irrelevant>
username = <irrelevant>
ssh = "c:\Program Files\_Tools\TortoiseHg\TortoisePlink.exe"

(注意 TortoisePlink 没有其他参数)

没有做 更多特别的事情

带日志输出的纯 THG 推送截图

推

SF-SSH的良好 plink+pageant 会话日志

>Plink.exe -v -agent bigbadger@hg.code.sf.net
Looking up host "hg.code.sf.net"
Connecting to 216.34.181.156 port 22
Server version: SSH-2.0-OpenSSH_5.3
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.62
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 2048 86:7b:1b:12:85:35:8a:b7:98:b6:d2:97:5e:96:58:1d
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "bigbadger".
Trying Pageant key #0
Authenticating with public key "github/lazybadger" from agent
Sending Pageant's response
Access granted
Opened channel for session
Allocated pty (ospeed 38400bps, ispeed 38400bps)
Started a shell/command
Last login: Tue Nov 20 03:20:48 2012 from 85.249.33.17
Server sent command exit status 1
Disconnected: All channels closed

Welcome to hg.sourceforge.net
This is a restricted Shell Account
You cannot execute anything here.
于 2012-11-18T19:40:02.453 回答