如何通过 ssh 将受保护的密钥添加到 Jenkins CI 实例的 ssh-agent 中?

如何通过 ssh 将受保护的密钥添加到 Jenkins CI 实例的 ssh-agent 中?

我管理一个在 Ubuntu 14.04 上运行的 Jenkins CI 服务器,它有一些要求:

  • 作业使用公钥/私钥身份验证来确保安全,因此在执行作业之前必须将身份添加到 ssh-agent
  • 我们的私钥文件必须受密码保护
  • 我们不能将密码存储在不安全的位置(例如脚本源代码或 Jenkins 配置文件)

理想情况下,我希望按以下顺序 ssh-add 并输入密码每次重启一次。但我不知道如何让 Jenkins CI 以利用此身份验证的方式运行其作业。

是否可以让 Jenkins 利用预先添加到 ssh-agent 中的身份?
有没有我在这里没有看到的替代策略?

答案1

使用静态套接字路径运行ssh-agent,使用与 Jenkins 相同的 UID:

sudo -u jenkins ssh-agent -a /tmp/ssh-agent.jenkins

确保$SSH_AUTH_SOCK环境变量指向该路径。您需要在 1) ssh 添加密钥之前手动设置它,以及 2) 在 Jenkins 启动脚本(例如/etc/init.d/jenkins或等效脚本)中设置它:

export SSH_AUTH_SOCK="/tmp/ssh-agent.jenkins"

sudo -E -u jenkins ssh-add ...

相关内容