0

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

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

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

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

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

这工作得很好。我怀疑尽管该服务仍然以相同的域用户身份运行,但在找不到 .ssh 文件夹的地方存在一些不同的地方。有没有人遇到过这个问题并知道解决方法。Windows 服务在哪里寻找已知主机?

即使知道我们有一个解决方法,这意味着如果您重新启动机器,构建将无法工作,直到您登录并运行启动命令

4

2 回答 2

2

我知道回答这个问题可能为时已晚,但这是您问题的根本原因。

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

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

    1. 运行“服务.msc”
    2. 找到“Jenkins Slave”服务
    3. 属性-> 登录-> 选择您当前的用户。
于 2015-05-04T02:46:15.273 回答
0

This is not the .ssh folder, but the registry.

Mount the registry hive of that user, and search under HKEY_CURRENT_USER\Software\SimonTatham\Putty\SshHostKeys. Copy your host key there, it should contain the host key.

于 2012-10-03T06:32:31.193 回答