我管理一个在 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 ...