在有人说这是重复的之前(好吧,可能是,但是……),我查看了这个、这个、这个、这个、这个以及许多其他链接,但似乎没有一个提供我所寻找的答案。
我的电脑是 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 pull
和git 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。有什么想法吗?