7

好的,所以我在 Ubuntu VM 中运行了 Hudson (v1.393),一切正常。但是,我正在尝试将 Mac 从属设备添加到 Ubuntu 主设备,但遇到了一些问题。

我已经设置了 SSH 密钥,以便从命令行,Ubuntu VM 可以使用该密钥 ssh 到 Mac 上名为 hudson 的用户。

在 Hudson 从站配置中,我选择了“通过 SSH 在 Unix 机器上启动从站代理”,并输入了主机 IP、从站上用户的用户名以及我在主站上的私钥文件的位置(已添加到从设备上的授权密钥文件)。

但是,主服务器无法连接到从服务器。查看日志(如下),它正在尝试使用密码进行身份验证。

这是基于失败的基于密钥的 SSH 尝试的回退吗?
Hudson 是否仅尝试使用密码进行身份验证,我需要更改其他内容以使其使用配置中定义的密钥文件?
是不是不可能在 Mac 上通过 ssh 启动从代理?(我知道这种从属启动方法的名称明确指出了 Unix,但我在想(阅读:希望)它也适用于 OS X)

日志

[01/14/11 10:38:07] [SSH] Opening SSH connection to 10.0.1.188:22.
[01/14/11 10:38:07] [SSH] Authenticating as hudson/******.
java.io.IOException: Password authentication failed.
at com.trilead.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:319)
at com.trilead.ssh2.Connection.authenticateWithPassword(Connection.java:314)
at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:565)
at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:179)
at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:184)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.io.IOException: Authentication method password not supported by the server at this stage.
at com.trilead.ssh2.auth.AuthenticationManager.authenticatePassword(AuthenticationManager.java:289)
... 9 more
[01/14/11 10:38:07] [SSH] Connection closed.

如果有人曾经设法征服这种类型的设置,或者有任何提示或想法,我将非常感激!谢谢

4

3 回答 3

16

我最近遇到了同样的问题,尝试使用 SSH 在 Mac OS X 10.6 机器上启动代理。

要使密码身份验证正常工作,您需要在客户端节点上编辑 /etc/sshd_config,设置PasswordAuthentication yes

在 Hudson 仪表板中,使节点脱机,确保配置具有有效的用户名和密码,然后启动代理。还要确保远程 FS 根目录归您连接的构建用户所有。

对于无密码的 ssh 身份验证,首先检查 Hudson 主服务器以哪个用户身份运行。让我们假设这是tomcat55。生成一个公有/私有 SSH 密钥对(密码为空),然后验证 Hudson 用户是否可以连接。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tomcat55/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tomcat55/.ssh/id_rsa.
Your public key has been saved in /home/tomcat55/.ssh/id_rsa.pub.

$ # authorize the hudson master on the hudson node
$ scp /home/tomcat55/.ssh/id_rsa.pub hudson@macnode:~/.ssh/authorized_keys
$ # test the connection
$ ssh -i /home/tomcat55/.ssh/id_rsa hudson@macnode

在 Hudson mac 节点上,/etc/sshd_config 需要允许无密码访问。

Protocol 2
PubkeyAuthentication yes

在节点配置中清除密码字段,并设置私钥字段(在本示例中为 /home/tomcat55/.ssh/id_rsa)。您现在应该能够启动代理:

[01/19/11 22:38:44] [SSH] Opening SSH connection to macnode:22.
[01/19/11 22:38:44] [SSH] Authenticating as hudson with /home/tomcat55/.ssh/id_rsa.
[01/19/11 22:38:45] [SSH] Authentication successful.
于 2011-01-20T04:28:24.753 回答
2

检查 Ubuntu 机器上的 /var/log/auth.log 文件。我打赌你需要 chmod 700 哈德森用户的 .ssh 目录。

于 2011-01-17T16:29:33.013 回答
1

我认为第一个答案(选定的答案)是一个很棒的答案,但我确实发现它不是唯一的解决方案。

在我的情况下,我有一个正在工作的 Mac OS 从属设备,然后我把那台 Mac 取下来并重新启动了一个。我想我可以调整现有节点配置的设置,将其指向新的 Mac。它不起作用,我在整个消息线程中描述了所有相同的错误和问题。

然后我进入并删除了节点并使用完全相同的设置重新创建它并且它工作。我怀疑SSH 密钥指纹发生了变化,通过删除节点并重新创建它,我能够让它工作。不管是什么,导致它失败的关键组件都不是配置选项。

于 2012-08-14T20:12:50.300 回答