从本地系统运行时,Mercurial SSH 进程会阻塞

从本地系统运行时,Mercurial SSH 进程会阻塞

我们在开发中使用 SSH 上的 Mercurial。我们使用 Hudson 进行持续集成,并将其部署在 Tomcat 上,使用本地系统帐户在 Windows 2003 Server 上运行。Mercurial 在 Mercurial.ini 中配置为使用 Putty 的 plink.exe 作为其 ssh 命令,并使用私钥进行 SSH 身份验证。

当 Hudson 尝试通过 SSH 执行任何 Mercurial 命令时,操作都会被阻止。我可以看到正在启动的三个进程:hg.exe、cmd.exe 和 plink.exe。在远程计算机上,我还可以看到正在打开 SSH 会话并接受身份验证密钥。

之后,似乎什么都没有发生,一切都被阻塞了,似乎永远都阻塞了。(顺便说一句,通过 SSH 的 subversion/SVN 可以从 Hudson 运行到同一台服务器,使用相同的用户和身份验证密钥)。

当然,最好的办法是找到解决方案,但至少能提示一下如何进行调试以取得进一步的进展,因为我现在陷入了困境,甚至还没有收到任何错误消息。

答案1

如果发生这样的事情,总是使用相同的用户帐户手动尝试。尽量与 Hudson 尝试的保持一致。输出将告诉您实际问题是什么。通常,它类似于您需要接受的证书。如果您需要接受证书,请使用Quest 的叮当声这是 putty plink 的扩展版本。

答案2

密钥是否受密码保护?如果是这种情况,Mercuiral 的 wiki 有一些建议。他们主要建议 a) 使用 TortoisePlink 或 b) 使用 pageant

查看:http://mercurial.selenic.com/wiki/AccessingSshRepositoriesFromWindows

答案3

使用 Sysinternals 的 psexec (http://download.sysinternals.com/files/PSTools.zip)以系统帐户身份运行。

psexec -i -s cmd.exe

为您提供本地系统用户的 cmd shell。

相关内容