为什么詹金斯说"服务器拒绝了1个私钥"在启动代理时?

时间:2017-01-19 05:55:47

标签: jenkins ssh devops master-slave jenkins-slave

我已成功使用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.

我可以使用user1建立从主机到节点机器的SSH连接,但是当我尝试使用来自jenkins的user1启动代理时,它拒绝私钥。有没有解决方案来解决这个问题?

4 个答案:

答案 0 :(得分:5)

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

从目标从属节点的控制台

  1. 切换到“root”用户。

    sudo su

  2. 使用主页“/var/lib/jenkins”添加jenkins用户。 {注意:我将主目录保存在/var/lib/jenkins}中:

    useradd -d /var/lib/jenkins jenkins

  3. 来自Jenkins Master

    1. 从主人的 Jenkins 用户复制id_rsa.pub密钥。

      cat /var/lib/jenkins/.ssh/id_rsa.pub

    2. 从目标从属节点的控制台

      1. 为Jenkins用户创建authorized_keys文件。

        mkdir /var/lib/jenkins/.ssh

        vi /var/lib/jenkins/.ssh/authorized_keys

      2. 将Jenkins master中的密钥粘贴到文件vim中。用“:wq!”保存。

答案 1 :(得分:0)

I solved this issue by following the below steps:

1) Make sure you are on correct path in both slave and master machines. You also need to sign in to the machines with the right user. Say I need to create a new global jenkins user "jenkins" and I want my keys to be in the path "/home/jenkins/.ssh/", add "jenkins" user to the machines first.

2) Now create .ssh folder and generate ssh keys using the steps given in https://support.cloudbees.com/hc/en-us/articles/222978868-How-to-Connect-to-Remote-SSH-Slaves-

上切换功能

3)确保在主计算机上也执行上述步骤-1和2

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

5)最后,将两个机器IP来回交换,以检查来自终端的双向连接。

6)配置詹金斯凭证和节点。确保在节点配置中提供相同的远程根目录-“ / home / jenkins”,然后按照https://linuxacademy.com/community/posts/show/topic/16008-jenkins-adding-a-slave

中的建议选择“手动信任的密钥验证策略”

答案 2 :(得分:0)

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

我在 Jenkins 中使用主私钥作为凭证,按照@Aamir 的回答,最后取得了一些成功。

答案 3 :(得分:-2)

我执行了Step1:user add -d / var / lib / jenkins jenkins;第2步:sudo su,passwd jenkins,chown -R jenkins /var/lib/jenkins/.ssh/*,chmod 700 .ssh,它在篡改了2个小时之后起作用了......