这是我的设置:
- Jenkins作为'jenkins'用户在我的Linux机器上运行。
- 我已经按照Linux - 设置Git的说明,为'jenkins'用户生成了SSH密钥对。
- 当我使用
sudo su jenkins
并尝试ssh-vT git@github.com
时,总是要求我输入密码,但我最终总是得到了认证。(详细选项会显示使用的哪个密钥,以及其他信息)。 - 我可以使用Jenkins从GitHub克隆我的存储库:
如下所示:
jenkins@alpm:~/jobs/test git/workspace$ git pull
Enter passphrase for key '/var/lib/jenkins/.ssh/id*_rsa':
Already up-to-date.
到目前为止,我已经严格按照指示操作。问题是,Jenkins作业遇到以下错误:
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
这与我输错密码短语时遇到的错误相同(当然,Jenkins不会要求我输入密码短语)。以下页面:
告诉我ssh-agent可以帮助记住密码短语,当我使用自己的用户时它确实可以,但对于jenkins id则不行。请注意,以我的普通用户身份运行时会产生以下结果:echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh
当使用我的 'jenkins' 帐户运行相同的命令时,没有任何输出(甚至没有权限被拒绝)。
我认为问题是密钥短语没有被记住。 你有什么想法吗? 我应该为 jenkins 用户启动 ssh-agent 或密钥环管理器吗?如何启动? 还是在转发到同一台机器时使用 ssh 转发更合适? 还有其他更好的想法吗?
ps:我从未使用 sudo gitted,我总是使用 jenkins 或我的用户帐户(正如在这篇 SO 帖子中提到的 - Ubuntu/GitHub SSH Key Issue)