我已经在我的 VPS 上设置了 Jenkins 并创建了一个作业,该作业设置为执行包含以下命令的 shell 脚本:ssh -T <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="47202e3307252e332532242c223369283520" rel="noreferrer noopener nofollow">[email protected]</a>
事实证明,我收到“权限被拒绝(公钥)”。响应,因为 ssh-agent 未启动。这可以通过在 shell 脚本中添加这两行来解决:
eval `ssh-agent -s`
ssh-add ~/.ssh/bitbucket_key
但是,当我需要克隆存储库时,我不喜欢将这些行添加到每个 Jenkins 项目中。我希望如果我通过 ssh 登录到我的 VPS 并更改为 Jenkins 用户来自己执行这两行,则不再需要这样做。不幸的是,这种情况并非如此。我可以成功运行ssh -T <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e3848a97a3818a97819680888697cd8c9184" rel="noreferrer noopener nofollow">[email protected]</a>
我自己,但如果没有这两条额外的线, Jenkins 的工作仍然会失败。
有没有办法避免这种行为,即我只需启动 ssh-agent 并向其添加 key 一次,而不是每次想要克隆存储库时都添加 key ?我无法想象每次我想要克隆和构建代码时启动(新的)ssh-agent 是一个好习惯。
最佳答案
在 ~/.ssh/config
中使用 ssh_config
。它具有简单的语法,您可以在 ssh_config
手册页中阅读。对于你的情况应该足够了
Host bitbucket.org
IdentityFile ~/.ssh/bitbucket_key
关于jenkins - 克隆 Bitbucket 存储库而不启动 ssh-agent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882110/