You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Jenkins Publish over SSH使用SSH密钥并解决私钥访问问题

解决Jenkins无法访问/root/.ssh/my_private_key的问题

我碰到过好多次Jenkins配置SSH服务器时的权限坑,你的问题核心原因很明确:Jenkins默认是以jenkins系统用户运行的,而/root/.ssh/目录的权限是严格锁死的(默认700权限),普通用户根本没法访问root的家目录。下面给你两种靠谱的解决办法,按步骤来就行:

方法一:把私钥迁移到Jenkins用户可访问的目录

这是最规范的做法,避免权限风险:

  • 先创建Jenkins用户专属的SSH目录:
    sudo mkdir -p /var/lib/jenkins/.ssh
    
  • 把你的私钥复制到这个目录:
    sudo cp /root/.ssh/my_private_key /var/lib/jenkins/.ssh/
    
  • 严格设置权限(SSH对私钥和目录权限要求极高,必须这么做):
    # 设置目录权限为700(只有所有者能读写执行)
    sudo chmod 700 /var/lib/jenkins/.ssh
    # 设置私钥文件权限为600(只有所有者能读写)
    sudo chmod 600 /var/lib/jenkins/.ssh/my_private_key
    # 把目录和文件的所有者改成jenkins用户
    sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh
    
  • 回到Jenkins全局配置的Publish over SSH > SSH Servers里,把私钥路径改成/var/lib/jenkins/.ssh/my_private_key,再点击Test Configuration测试连接。

方法二:直接在Jenkins里粘贴私钥内容(更快捷)

如果你不想折腾文件权限,可以直接用插件的“直接输入”功能:

  • 打开/root/.ssh/my_private_key文件,复制里面的全部内容(包括-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----
  • 在Jenkins的SSH Server配置里,把Path to key改成选择Enter directly,然后在下面的文本框里粘贴刚才复制的私钥内容
  • 如果私钥有密码(passphrase),记得在Passphrase输入框里填写对应的密码,然后测试配置

额外注意事项

  • 绝对不要为了省事放宽/root/root/.ssh的权限(比如chmod 755 /root),这会严重降低服务器的安全性
  • 测试Jenkins配置前,建议先手动验证连接:用jenkins用户尝试SSH到目标服务器,命令如下:
    sudo -u jenkins ssh -i /var/lib/jenkins/.ssh/my_private_key 你的目标服务器用户名@mytar-server
    
    如果手动连接失败,先排查SSH本身的问题(比如目标服务器的authorized_keys是否配置正确),再去调Jenkins插件配置

内容的提问来源于stack exchange,提问作者donmelchior

火山引擎 最新活动