所以,我使用git和github与MFA,所以,为了避免烦人的密码询问,一年多以来我使用git@github.com:user/repo.git
URL样式。
几天前,我运行了brew update
,现在,每次尝试与github服务器同步时,git都会询问密钥密码。
到目前为止我做了什么:
检查了我的配置,对我来说似乎没问题,但在这里(相关部分):
[user]
name = Carlos Alexandro Becker
email = caarlos0@gmail.com
helper = osxkeychain
尝试更新git和osxkeychain,当前版本为:
git 2.4.1
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
为github.com清理osxkeychain
我看到的一个奇怪的事情是:
$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa.pub'
Enter passphrase for /Users/carlos/.ssh/id_rsa.pub:
所以,我的猜测是ssh-agent不能正常工作,但我不知道为什么以及如何修复它。
答案 0 :(得分:36)
由于您提到brew
,我假设您在Mac上运行。这也发生在我身上,解决方案是确保我将密码添加到钥匙串(Mac版本的ssh-agent
,在Mac上自动启动,包括钥匙串支持):
$ ssh-add -K
并存储不同密钥的密码:
$ ssh-add -K /path/to/private/key/file
特别是在我的情况下(因为我为GitHub使用了一个单独的键):
$ ssh-add -K ~/.ssh/github_rsa
要自动将密钥加载到ssh-agent并在密钥链中存储密码,您需要修改〜/ .ssh / config:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
我从这里获得了这些信息:
以上解决了ssh密钥的OP问题。如果您还要缓存HTTPS凭据,以下内容对Mac用户也很有用。您可以使用凭证帮助程序执行此操作。要告诉git使用osxkeychain
帮助器,请确保将其添加到~/.gitconfig
(或~/.config/git/config
)。
[credential]
helper = osxkeychain
您可以从命令行设置此条目,而不是直接编辑文件:
$ git config --global credential.helper osxkeychain
有关更多详细信息,请参阅这些链接(包括如何验证您的系统是否已安装osxkeychain
帮助程序):
答案 1 :(得分:2)
我的ssh-agent
似乎出了问题。
我试图阻止它(使用kill -9
)并再次启动它(使用ssh-agent
),但它无法解决问题。
在我运行eval 'ssh-agent -s'
后,所有内容都开始按预期运行了。
我仍然不知道为什么会这样。
答案 2 :(得分:0)
在我的情况下,发生这种情况是因为我更改了用于Github的ssh密钥,却忘记了更改~/.ssh/config
中的条目。
我应该将IdentityFile ~/.ssh/id_rsa
行更改为新SSH密钥的位置。