14

我可以使用 SSH 成功连接到远程机器,但是当我从 Jenkins 启动代理时,它会引发以下错误:

ERROR: Server rejected the 1 private key(s) for user1 (credentialId:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/method:publickey)
[01/19/17 05:35:15] [SSH] Authentication failed.
hudson.AbortException: Authentication failed.
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1219)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:714)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:709)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
[01/19/17 05:35:15] Launch failed - cleaning up connection
[01/19/17 05:35:15] [SSH] Connection closed.

我可以使用 建立从主机到节点计算机的 SSH 连接user1,但是当我尝试使用user1从 jenkins 启动代理时,它会拒绝私钥。有什么解决方案可以克服这个问题吗?

4

4 回答 4

15

我按照以下步骤解决了这个问题:

从目标从节点的控制台

  1. 切换到root用户:
sudo su
  1. 添加带有主目录的 jenkins 用户/var/lib/jenkins(注意:我将主目录保存在 中/var/lib/jenkins):
useradd -d /var/lib/jenkins jenkins

来自詹金斯大师

将Jenkins/var/lib/jenkins/.ssh/id_rsa.pub用户的密钥复制到主服务器上

从目标从节点的控制台

  1. 为 Jenkins 用户创建一个 authorized_keys 文件
mkdir /var/lib/jenkins/.ssh
touch /var/lib/jenkins/.ssh/authorized_keys
  1. 将来自 Jenkins master 的密钥粘贴到文件 vim.xml 中。保存 :wq!

  2. 确保文件具有正确的所有者和权限。

chown -R jenkins /var/lib/jenkins/.ssh
chmod 600 /var/lib/jenkins/.ssh/authorized_keys
chmod 700 /var/lib/jenkins/.ssh
于 2017-08-25T08:17:13.470 回答
2

我按照以下步骤解决了这个问题:

1)确保您在从机和主机上都处于正确的路径上。您还需要使用正确的用户登录机器。假设我需要创建一个新的全局 jenkins 用户“jenkins”并且我希望我的密钥位于路径“/home/jenkins/.ssh/”中,首先将“jenkins”用户添加到机器中。

2) 现在创建 .ssh 文件夹并使用https://support.cloudbees.com/hc/en-us/articles/222978868-How-to-Connect-to-Remote-SSH-Slaves-中给出的步骤生成 ssh 密钥

3) 确保在您的主机中执行上述步骤 - 1 和 2

4)您需要在同一路径中的主从计算机中拥有 ssh 密钥,并具有相同的“jenkins”用户权限。

5) 最后,来回 SSH 两台机器 IP 以检查终端的双向连接。

6)配置jenkins凭证和节点。确保在节点配置中提供相同的远程根目录 - “/home/jenkins”并选择“手动可信密钥验证策略” - 如https://linuxacademy.com/community/posts/show/topic/16008中所建议-jenkins-adding-a-slave

于 2018-06-28T22:07:50.147 回答
1

我的解决方案是:

$ user add -d /var/lib/jenkins jenkins
$ sudo su
$ passwd jenkins
$ chown -R jenkins /var/lib/jenkins/.ssh/*
$ chmod 700 .ssh

它在篡改2小时后工作......

于 2017-11-16T07:13:03.183 回答
0

主人需要为我添加已知主机的列表。您需要做的是从本地通过 SSH 连接到主服务器。然后使用 master 私钥通过 SSH 连接到 slave。如果您可以手动执行此操作,那么 Jenkins 也将能够执行此操作。

我使用主私钥作为詹金斯的凭证,遵循@Aamir 的回答,最后取得了一些成功。

于 2021-06-23T17:15:01.350 回答