当从本地系统运行时,Mercurial SSH进程块

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

当Hudson通过SSH尝试任何Mercurial命令时,操作就会被阻止。 我可以看到正在启动的三个进程:hg.exe,cmd.exe和plink.exe。 在远程机器上,我也可以看到正在打开的SSH会话和validation密钥被接受。

在那之后,似乎没有任何事情发生,而且一切似乎永远都是封闭的。 (作为一个方面说明,通过SSH的Subversion / SVN从哈德森工作到相同的服务器,使用相同的用户和身份validation密钥)。

一个解决scheme当然是最好的,但至less有一个暗示,我应该如何进一步debugging它会很好,因为我被卡住了,甚至没有错误信息。

如果发生这种情况,请始终使用相同的用户帐户手动尝试。 尽可能保持与哈德森所尝试的相同。 输出会告诉你什么是实际的问题。 通常它就像你需要接受的证书。 如果您需要接受证书,请使用Quest的plink ,它是putty plink的扩展版本。

难道密钥是密码保护的? 如果是这样的话,Mercuiral的wiki有一些build议。 主要他们build议或者a)使用TortoisePlink或b)使用选美

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

从Sysinternals( http://download.sysinternals.com/files/PSTools.zip )使用psexec作为系统帐户运行。

这个

psexec -i -s cmd.exe 

为您提供一个cmd shell作为本地系统用户。