如何配置 Jenkins Publish over SSH 以使用 SSH 密钥

How to configure Jenkins Publish over SSH to use SSH key

我们的 Jenkins 实例是 运行 在 CentOS Linux 7.3.x 服务器上。我正在尝试在 Jenkins 全局设置中配置额外的“SSH 服务器”。

Jenkins 无法访问我位于“/root/.ssh/my_private_key”的私钥。

Jenkins UI 错误:通过 SSH 发布 > SSH 服务器 > SSH 服务器 > 密钥路径

No file matching: '/root/.ssh/my_private_key'

Jenkins UI 错误:通过 SSH 发布 > SSH 服务器 > SSH 服务器 > 测试配置)

jenkins.plugins.publish_over.BapPublisherException: Failed to read file - filename [/root/.ssh/my_private_key] (relative to JENKINS_HOME if not absolute).
Message: [/root/.ssh/my_private_key]

通过 SSH 发布 > SSH 服务器 > SSH 服务器

姓名 我的目标主机

主机名 mytargethost.tld

用户名 远程用户名

远程目录 /home/remoteusername

使用密码验证,或使用不同的密钥 [x](勾选)

密码/密码 my_private_key_passphrase

密钥路径 /root/.ssh/my_private_key

端口 22

超时(毫秒) 300000

其他领域 空白

Jenkins 服务 运行 作为 jenkins 用户,为了将 Jenkins 配置为使用私钥与 SSH 连接,Jenkins 全局设置中的 "Path to key" 字段(通过 SSH 发布 > SSH 服务器 > SSH服务器)必须是(相对于 JENKINS_HOME):

.ssh/my_private_key

当然,"my_private_key" 的权限必须是 0600 & owner/group "jenkins:jenkins"

JENKINS_HOME=/var/lib/jenkins
chmod 0600 ${JENKINS_HOME}/.ssh/my_private_key
chown jenkins:jenkins ${JENKINS_HOME}/.ssh/my_private_key 

SSH 密钥的真实路径是:/var/lib/jenkins/.ssh/my_private_key if JENKINS_HOME=/var/lib/jenkins