Service CruiseControl.net使用SSH连接到BitBucket并作为服务运行

Service CruiseControl.net使用SSH连接到BitBucket并作为服务运行,service,ssh,cruisecontrol.net,bitbucket,Service,Ssh,Cruisecontrol.net,Bitbucket,这是我的情况 我正在将Cruise Control作为Windows服务运行,并试图让它通过SSH连接到BitBucket上的Mercurial存储库 我非常确定所有配置都正常(PuttyGen、Pagaent等)。我使用运行服务时使用的同一个帐户远程访问服务器,如果我从命令行发出hg pull-b ssh://@bitbucket.org//,一切正常。我在mercurial.ini中将-v添加到ssh配置中,可以看到所采取的所有步骤 如果我在命令提示符下运行CC.NET,那么它可以正常运行。

这是我的情况

我正在将Cruise Control作为Windows服务运行,并试图让它通过SSH连接到BitBucket上的Mercurial存储库

我非常确定所有配置都正常(PuttyGen、Pagaent等)。我使用运行服务时使用的同一个帐户远程访问服务器,如果我从命令行发出hg pull-b ssh://@bitbucket.org//,一切正常。我在mercurial.ini中将-v添加到ssh配置中,可以看到所采取的所有步骤

如果我在命令提示符下运行CC.NET,那么它可以正常运行。在控制台窗口中,我可以看到来自SSH操作的相同日志记录

但是,如果我将CC.NET作为服务运行(使用我登录的同一用户帐户),则对BitBucket的调用将超时。我也无法找出原因。生成日志没有帮助,temp目录中的ccnet.log或ccnet.trace也没有帮助。我希望其中一个包含SSH操作的日志记录,但它们没有

有人能帮忙吗?是否作为服务运行会阻止它连接到Pagaent(我通过将Pagaent添加到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run启动了Pagaent)。当我从命令行执行拉拽操作时,我必须确定一个对话框,但只有一次。它现在作为服务运行,是否正在等待同一个对话框

接近我的智慧就到此为止


谢谢

我最终还是成功了。诀窍是在不使用密码短语的情况下创建公钥。当作为服务运行时,解决方案必须是完全非交互式的,而带有pagaent.exe的passphrase选项则不是

以下是步骤:

  • 使用PuttyGen生成不带密码短语的安全密钥。如果您真的需要一个,那么您可以将它添加到mercurial.ini文件中,但对我来说,这一点并不重要,因为它仍然清晰可见

  • 将mercurial.ini复制到两个位置:C:\Windows\System32\config\systemprofile和C:\Windows\SysWOW64\config\systemprofile。也许只有一个是真正必要的,但我没有时间去试验。第一个是运行64位应用程序时系统用户的主目录,32位应用程序的SysWOW64位置。如果你和我做的一样,请确保两个文件保持同步,或者进一步确定哪个是正确的位置

  • 在两个文件的[ui]键下添加类似于此行的内容: ssh=“D:\Program Files\TortoiseHg\TortoisePlink.exe”-ssh-2-C-batch-v-i“[ppk文件的路径]” 如果在步骤1中创建了密码短语,请在命令末尾添加密码短语。 确保指定了TortoisePlink.exe,而不是Plink.exe。它们应该都在同一个目录中

  • 从下载psexec

  • 运行d:\PSTools\PsExec.exe-s-i cmd.exe。这将在交互模式下打开一个命令行作为系统帐户

  • 现在做一个hg拉,或hg克隆或其他什么

  • 应弹出一个对话框,其中包含一条确认消息。这是一次性的事情,也是您必须执行PsExec步骤的原因。确定对话框


现在,cc.net应该能够使用SSH在本地系统帐户下作为服务运行

你把这事弄清楚了吗?我也有同样的问题。最终是的,这不是直截了当的。看看我刚刚发布的答案。哇,这不是一个简单的过程。感谢分享您的解决方案!