本文只要提供一种Jenkins通过私钥连接Node的方法。方法不区分Jenkins版本。
大体步骤:
(1)生成密钥对
(2)Jenkins上使用私钥配置Credentials
(3)Node上配置authorized_keys 文件
(4)添加Node
实例
下面演示一个实例。
需求:Jenkins通过私钥方式连接Node(app用户)
(1)在Node上使用ssh-keygen生成app用户的密钥对
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/app/.ssh/id_rsa): Created directory '/home/app/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/app/.ssh/id_rsa. Your public key has been saved in /home/app/.ssh/id_rsa.pub. The key fingerprint is: SHA256:i21tgJeX5Apv8uCqIlTJdzh6OiOe1+0PT5130iJUxsg app@dgvxl4418 The key's randomart image is: +---[RSA 2048]----+ | | | . o | | . . . .E + | | + + o + .o | | . o = S +. | | . . . * *o . . | |. + =.B.o+ + o | |o..= o B+. o + | |o++.+.o.oo | +----[SHA256]-----+
(2)配置Node的authorized_keys 文件
$ cd .ssh/ $ cp id_rsa.pub authorized_keys && chmod 600 authorized_keys
(3)Jenkins上配置Credentials
在Jenkins上(我的在左侧边栏)点击 Credentials --> System --> Global credentials (unrestricted) ,如下图所示


点击 Add Credentials,选择SSH Username with private key

ID和Description 随便填都行。 但是Username 和 Private Key 要输正确。
Username就是连接到Node的哪个用户,以我上面的需求的话,就是app用户; Private Key 就是私钥,也就是我刚才用ssh-keygen生成的私钥(即 ~/.ssh/id_rsa)。

准备工作完毕,下面开始添加Node。
到Jenkins添加Node界面, 点击New Node , 可以copy一个存在的Node的配置,这样方便一点


配置注意点如下:
(1)Host 要填对IP地址,也就是你的Node IP
(2)Credentials 选择刚才配置的Credentials
(3)Host Key Verification Strategy, 如果选择Know Host 的话,需要进行Host验证(可以登录Jenkins 服务器上,执行 ssh Node IP 命令, 输入yes 即可),我这里直接选择不验证,也就是Non

(4)如果Node上的java使用自安装的,可以在Advantage中JavaPath指定 Java 路径

(5)点击Launch agent 即可,如果连不上,根据报错来处理。
