Jenkins通过私钥连接Node
本文只要提供一种Jenkins通过私钥连接Node的方法。方法不区分Jenkins版本。
大体步骤:
(1)生成密钥对
(2)Jenkins上使用私钥配置Credentials
(3)Node上配置authorized_keys 文件
(4)添加Node
实例
下面演示一个实例。
需求:Jenkins通过私钥方式连接Node(app用户)
(1)在Node上使用ssh-keygen生成app用户的密钥对 (在Node上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 文件(在Node上app用户执行的)
$ 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 即可,如果连不上,根据报错来处理。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!