当Jenkins Slave作为Windows服务运行时,Git不起作用

时间:2012-10-03 06:20:10

标签: git jenkins

如果我们将Jenkins Slave作为Windows服务运行,则git无法获取错误

The server's host key is not cached in the registry

该服务作为我们使用putty设置的特定域用户运行。如果我们使用该用户登录计算机,Git Bash无需请求密码即可正常工作,因此SSH密钥设置正确。

我们发现,如果您使用命令行在用户下启动Jenkins Slave,我们会在构建工作时设置ssh密钥。我们使用的命令是

javaws http://brick:8083/computer/nsw-buildbox1/slave-agent.jnlp

这完全没问题。我怀疑,尽管服务仍然作为相同的域用户运行,但有些东西不同,它找不到.ssh文件夹。有没有人遇到这个问题,并知道一种方法来解决它。 Windows服务在哪里查找已知主机?

即使知道我们有一个解决方法,这意味着如果重新启动计算机,在您登录并运行启动命令之前,构建将无法运行

2 个答案:

答案 0 :(得分:2)

我知道回答这个问题可能会迟到,但这是导致问题的根本原因。

  • 当您通过以下方式运行奴隶: javaws http://brick:8083/computer/nsw-buildbox1/slave-agent.jnlp 你实际上是以当前登录的用户身份运行奴隶,系统已经正确地为当前用户缓存了你的ssh会话。

  • 但是当您选择将其安装为服务时,您的Windows服务实际上并不是以当前用户身份运行。这就是为什么你总是被给出这个错误“服务器的主机密钥没有缓存在注册表中”。是的,您从未以服务的用户身份连接到服务器。 要修复它,您必须手动使服务作为当前用户运行。

    1. 运行'services.msc'
    2. 找到'Jenkins Slave'服务
    3. 属性 - >登录 - >选择您当前的用户。

答案 1 :(得分:0)

这不是.ssh文件夹,而是注册表。

Mount the registry hive of that user,并在HKEY_CURRENT_USER\Software\SimonTatham\Putty\SshHostKeys下搜索。将主机密钥复制到那里,它应包含主机密钥。