无法在向Github推送或拉取时停止提示输入ssh密钥密码

3

在有人说这是重复的之前(好吧,可能是,但是……),我查看了这个这个这个这个这个以及许多其他链接,但似乎没有一个提供我所寻找的答案。

我的电脑是 Arch Linux,我正在使用标准更新的openssh套件和git 2.29.2。我有一个SSH密钥(~/.ssh/id_ed25519),受到密码的保护,公共部分位于GitHub中。在本地,我的远程配置为使用ssh:

$ git remote -v
origin  git@github.com:my-account/git.git (fetch)
origin  git@github.com:my-account/git.git (push)

git pullgit push正常工作,只要输入ssh密钥密码即可。我决定按照Arch Wiki的ssh代理文章进行操作。这里是文章链接。我启动了代理:

$ eval $(ssh-agent)
Agent pid 33150

我添加了密钥:

$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/user/.ssh/id_ed25519: 
Identity added: /home/user/.ssh/id_ed25519 (user@machine)

我确认密钥已被添加:

$ ssh-add -l
256 SHA256:MlO552tuyNhfE2x1CeVdzT4QpeaavT229V2UcHDgIX8 user@machine (ED25519)

我还按照Arch Wiki中的指示将AddKeysToAgent yes 添加到 ~/.ssh/config 中(我也试过在上面一行放置Host *,但无济于事):

$ cat ~/.ssh/config
AddKeysToAgent yes

但每次我尝试推送或拉取时,都会提示我输入密码。一旦我输入密码,它就可以正常工作:

$ git push
Enter passphrase for key '/home/user/.ssh/id_ed25519': 
Everything up-to-date
$ git push
Enter passphrase for key '/home/user/.ssh/id_ed25519': 
Everything up-to-date

有什么想法吗?可能发生了什么事情?

编辑:

我刚刚测试了一些东西: 我将我的公钥复制到另一台服务器上,可以连接到该服务器而无需提示输入密钥密码。这暗示问题出在 git/github 上,而不是 ssh。有什么想法吗?

1个回答

1

维基百科提到需要在~/.ssh/config中添加配置设置AddKeysToAgent yes

如果这在另一台服务器上有效(使用ssh-agent缓存的密码短语),请比较两者之间的环境变量(特别是任何带有SSH名称的变量)。

正如OP Adriano Pinaffo评论中所提到的,重新启动计算机就足以使其工作。
可能有一个进程正在保持对SSH资源的控制,这会阻止代理正常工作。


奇怪...我不得不重新启动我的机器,然后它开始工作了。 - Adriano_Pinaffo
@Adriano_Pinaffo 好的,我已经将您的评论包含在答案中以增加可见性。 - VonC
@Adriano_Pinaffo,抱歉,最后解决这个问题的方法是什么? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接