因此,我将 git 和 github 与 MFA 一起使用,因此,为了避免烦人的密码询问,一年多来我一直使用 git@github.com:user/repo.git
URL 样式.
几天前,我运行了一个brew update
,现在,每次尝试与 github 服务器同步时,git 都会询问我 key 密码。
到目前为止我做了什么:
检查了我的配置,我觉得没问题,但这是(相关部分):
[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-agent 是否正在运行,重新添加我的身份
我看到的一件奇怪的事情是:
$ 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 无法正常工作,但我不知道为什么也不知道如何修复它。
最佳答案
既然你提到了 brew
,我假设你在 Mac 上运行。这也发生在我身上,解决方案是确保我将密码添加到钥匙串(keychain)(ssh-agent
的 Mac 版本,在 Mac 上自动启动,包括钥匙串(keychain)支持):
$ ssh-add -K
并存储不同 key 的密码:
$ ssh-add -K /path/to/private/key/file
特别是在我的情况下(因为我为 GitHub 使用单独的 key ):
$ ssh-add -K ~/.ssh/github_rsa
要自动将 key 加载到 ssh-agent 并将密码短语存储在您的钥匙串(keychain)中,您需要修改您的 ~/.ssh/config:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
我从这里获得了这些信息:
- http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html#Passphrase
- https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
以上内容解决了 ssh key 的 OP 问题。如果您也想缓存 HTTPS 凭证,以下内容对 Mac 用户也很有用。您可以使用凭据助手来执行此操作。要告诉 git 使用 osxkeychain
助手,请确保将其添加到您的 ~/.gitconfig
(或 ~/.config/git/config
).
[credential]
helper = osxkeychain
您可以从命令行设置此条目,而不是直接编辑文件:
$ git config --global credential.helper osxkeychain
查看这些链接了解更多详情(包括如何验证您的系统是否安装了 osxkeychain
助手):
关于git突然开始每次都要求SSH key 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30495445/