如何通过SSH配置Jenkins发布以使用SSH密钥

时间:2018-02-22 16:57:04

标签: linux jenkins ssh devops ssh-keys

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

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

  • Jenkins版本:2.101
  • “通过SSH发布”插件版本:1.18

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

主机名 mytargethost.tld

用户名 remoteusername

远程目录 /家庭/ remoteusername

使用密码验证,或使用其他密钥 [x](已选中)

密码短语/密码 my_private_key_passphrase

密钥路径 /root/.ssh/my_private_key

端口 22

超时(毫秒) 300000

其他字段 空白

1 个答案:

答案 0 :(得分:1)

Jenkins服务作为jenkins用户运行,为了配置Jenkins使用私钥连接SSH,Jenkins全局设置中的“密钥路径”字段(通过SSH发布> SSH服务器> SSH服务器)必须是(相对于JENKINS_HOME):

.ssh/my_private_key

当然,“my_private_key”的权限必须是0600&所有者/团体“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如果JENKINS_HOME = / var / lib / jenkins