jenkins - 克隆 Bitbucket 存储库而不启动 ssh-agent

标签 jenkins ssh bitbucket

我已经在我的 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/

相关文章:

git - Jenkins + 混帐 : Only build if PR introduced changes in subdirectory

jenkins - Jenkins中的自定义工作区

python - 从 bitbucket repo 的分支安装 pip

mercurial - 如何用另一个存储库完全替换 bitbucket 存储库?

node.js - Angular2 - 使用 Bitbucket(或其他 GIT 存储库)进行 Azure 持续部署

amazon-web-services - JENKINS 上的 AWS CLI 命令

testing - 如何将 TestRail 与 Jest 测试集成?

macos - 停止 ssh 登录中烦人的 session 保持事件消息

amazon-web-services - SSH 到 EC2 实例停止 OS Mojave

linux - 显示 Linux 启动时运行的 bash 脚本中的内容