0
votes

I want to set up a Linux node as a slave to the Jenkins master. I was going through the tutorial on setting it up for a Linux machine.

Have master launch slave agent via SSH

Jenkins has a built-in SSH client implementation that it can use to talk to remote sshd and start a slave agent. This is the most convenient and preferred method for Unix slaves, which normally has sshd out-of-the-box. Click Manage Jenkins, then Manage Nodes, then click "New Node." In this set up, you'll supply the connection information (the slave host name, user name, and ssh credential). Note that the slave will need the master's public ssh key copied to ~/.ssh/authorized_keys.

When it says ~/.ssh/authorized_keys does it mean that I need to have the public key in this location on the node when logged in as a jenkins user (which is the username that the Master uses to log into the slaves)?

What does ~ signify? Which user's home directory are we talking about?

2

2 Answers

2
votes

To be precise,

  • the public key to be copied is the public key of the user running the master
  • the destination is the .ssh/authorized_keys file of the user on the slave (ie, the user whose credentials you select for the ssh connection on the Jenkins node config page).

The ~ character is expanded by most shells to the current user's home directory (e.g., /home/userxyz).

1
votes

~ means the user that is running Jenkins.

And yes, ~/.ssh/authorized_keys means authorized_keys for the Jenkins user (the one running on your Jenkins server, not literally jenkins).