我已成功使用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
启动代理时,它拒绝私钥。有没有解决方案来解决这个问题?
答案 0 :(得分:5)
我按照以下步骤解决了这个问题:
从目标从属节点的控制台
sudo su
“/var/lib/jenkins”
添加jenkins用户。 {注意:我将主目录保存在/var/lib/jenkins
}中:
useradd -d /var/lib/jenkins jenkins
来自Jenkins Master
从主人的 Jenkins 用户复制id_rsa.pub密钥。
cat /var/lib/jenkins/.ssh/id_rsa.pub
从目标从属节点的控制台
为Jenkins用户创建authorized_keys文件。
mkdir /var/lib/jenkins/.ssh
vi /var/lib/jenkins/.ssh/authorized_keys
将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个小时之后起作用了......