如果我们将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服务在哪里查找已知主机?
即使知道我们有一个解决方法,这意味着如果重新启动计算机,在您登录并运行启动命令之前,构建将无法运行
答案 0 :(得分:2)
我知道回答这个问题可能会迟到,但这是导致问题的根本原因。
当您通过以下方式运行奴隶: javaws http://brick:8083/computer/nsw-buildbox1/slave-agent.jnlp 你实际上是以当前登录的用户身份运行奴隶,系统已经正确地为当前用户缓存了你的ssh会话。
但是当您选择将其安装为服务时,您的Windows服务实际上并不是以当前用户身份运行。这就是为什么你总是被给出这个错误“服务器的主机密钥没有缓存在注册表中”。是的,您从未以服务的用户身份连接到服务器。 要修复它,您必须手动使服务作为当前用户运行。
答案 1 :(得分:0)
这不是.ssh
文件夹,而是注册表。
Mount the registry hive of that user,并在HKEY_CURRENT_USER\Software\SimonTatham\Putty\SshHostKeys
下搜索。将主机密钥复制到那里,它应包含主机密钥。