为什么用户代理不断更改 PID 并丢失我的密钥?

Why does user-agent keep changing PID and losing my keys?

大图:尝试将 GitHub 连接到 Jenkins。 Jenkins 在用户 Jenkins 的 Ubuntu 上 运行。(我以 Pierre 身份登录,然后更改为用户 Jenkins)

我正在关注 This Guide 以将两者联系起来。 我正在尝试从 Jenkins 命令行生成密钥。 我用了

ssh-keygen -t rsa -C 'pierre@myplace.com'

生成密钥并使用标准配置。但是当我尝试连接到 GitHub 时,我得到以下信息:

jenkins@Desktop:~$ eval "$(ssh-agent -s)"
Agent pid 6328
jenkins@Desktop:~$ ssh-add -l -E md5
The agent has no identities.
jenkins@Desktop:~$ ssh-add ~/.ssh/id_rsa
Identity added: /var/lib/jenkins/.ssh/id_rsa (/var/lib/jenkins/.ssh/id_rsa)
jenkins@Desktop:~$ ssh-add -l -E md5
2048 MD5:ad:1f:9d:5c:b5:cc:8e:bb:06:5b:c2:5e:68:67:77:24 /var/lib/jenkins/.ssh/id_rsa (RSA)
jenkins@Desktop:~$ ssh -T git@github.com
Permission denied (publickey).
jenkins@Desktop:~$ eval "$(ssh-agent -s)"
Agent pid 6353
jenkins@Desktop:~$ ssh-add -l -E md5
The agent has no identities.

=> 即使在手动将密钥添加到 ssh-agent 之后,它也无法连接!

1) 代理的 PID 发生变化是怎么回事?

2) 为什么它失去了身份?

3) 为什么连接不上?

问题1和2的答案是一样的:每个eval "$(ssh-agent -s)"每次都是启动一个新的ssh代理。 eval 执行当时作为 shell 命令输出的文本,导致它定义新的环境变量,告诉 ssh-addssh 如何使用新的 ssh 代理(它还会删除有关如何使用您之前启动的任何其他 ssh 代理的信息,尽管它们仍然存在 运行)。

我不知道问题 3 的答案,但您尝试直接通过 ssh 连接到 git@github.com 似乎很奇怪,而且我在您发布的指南中找不到告诉您的地方要做到这一点。 AIUI,git@github.com 不是你应该通过 ssh 访问的东西,而是只是出现在 Gitlab 项目的 URL 中的东西,但我可能是错的。