在不启动 ssh-agent 的情况下克隆 Bitbucket 存储库

Clone Bitbucket repository without starting ssh-agent

我在 VPS 上设置了 Jenkins 并创建了一个作业,该作业设置为执行包含以下命令的 shell 脚本:ssh -T git@bitbucket.org

事实证明我收到 "Permission denied (publickey)." 响应,因为 ssh-agent 未启动。这可以通过将这两行添加到 shell 脚本来解决:

eval `ssh-agent -s`
ssh-add ~/.ssh/bitbucket_key

但是,当我需要克隆存储库时,我不喜欢将这些行添加到每个 Jenkins 项目。我希望如果我通过 ssh 登录到我的 VPS 并更改为 Jenkins 用户以自己执行这两行,则不再需要这样做。不幸的是,这种情况并非如此。我自己可以成功 运行 ssh -T git@bitbucket.org,但是如果没有额外的两条线,Jenkins 的工作仍然失败。

有没有办法避免这种行为,即我只需要启动 ssh-agent 并将我的密钥添加到它一次而不是每次我想克隆存储库时的方法?我无法想象每次我想克隆和构建我的代码时启动(一个新的)ssh-agent 是一个好习惯。

~/.ssh/config 中使用 ssh_config。它具有简单的语法,您可以在 ssh_config 的手册页中阅读。对于你的情况应该足够了

Host bitbucket.org
  IdentityFile ~/.ssh/bitbucket_key