I am successfully able to connect to remote machine using SSH but when I am launching the agent from Jenkins it throws the following error:
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.
I can establish SSH connection from master machine to the node machine using user1
, however when I am trying to launch the agent using user1
from jenkins it is rejecting the private key. Is there any solution to overcome this issue?
I solve this issue following below steps:
From the target slave node's console
root
user:sudo su
/var/lib/jenkins
(Note: I am keeping my home directory in /var/lib/jenkins
):useradd -d /var/lib/jenkins jenkins
From the Jenkins Master
Copy the /var/lib/jenkins/.ssh/id_rsa.pub
key from the Jenkins user on the master
From the target slave node's console
mkdir /var/lib/jenkins/.ssh
touch /var/lib/jenkins/.ssh/authorized_keys
Paste the key from the Jenkins master into the file vim. Save with :wq!
Make sure the files have correct owner and permission.
chown -R jenkins /var/lib/jenkins/.ssh
chmod 600 /var/lib/jenkins/.ssh/authorized_keys
chmod 700 /var/lib/jenkins/.ssh
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) Make sure you do the above steps - 1 & 2 in your master machines as well
4) You need to have ssh keys in both master and slave machines in the same path and with same "jenkins" user permissions.
5) Finally, ssh both machine IPs to and fro to check the bidirectional connectivity from your terminal.
6) Configure jenkins credentials and nodes. Make sure you give the same remote root directory - "/home/jenkins" in your node configuration and select "manually trusted key verification strategy" - as suggested in https://linuxacademy.com/community/posts/show/topic/16008-jenkins-adding-a-slave
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With