git每次突然开始要求SSH密钥密码

caa*_*os0 19 git ssh github

所以,我使用git和github与MFA,所以,为了避免烦人的密码询问,一年多以来我使用的是git@github.com:user/repo.gitURL样式.

几天前,我跑了一个brew update,现在,每次尝试与github服务器同步时,git都会问我关键密码.

到目前为止我做了什么:

  • 检查了我的配置,对我来说似乎没问题,但在这里(相关部分):

    [user]
       name = Carlos Alexandro Becker
       email = caarlos0@gmail.com
       helper = osxkeychain
    
    Run Code Online (Sandbox Code Playgroud)
  • 试图更新git和osxkeychain,当前版本是:

    git 2.4.1
    OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
    
    Run Code Online (Sandbox Code Playgroud)
  • 为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:
Run Code Online (Sandbox Code Playgroud)

所以,我的猜测是ssh-agent不能正常工作,但我不知道为什么以及如何解决它.

Sub*_*ion 38

既然你提到过,brew我假设你在Mac上运行.这也发生在我身上,解决方案是确保我将密码添加到钥匙串(Mac版本,在Mac上ssh-agent自动启动,包括钥匙串支持):

$ ssh-add -K
Run Code Online (Sandbox Code Playgroud)

并存储不同密钥的密码:

$ ssh-add -K /path/to/private/key/file
Run Code Online (Sandbox Code Playgroud)

特别是在我的情况下(因为我为GitHub使用单独的键):

$ ssh-add -K ~/.ssh/github_rsa
Run Code Online (Sandbox Code Playgroud)

自动将密钥加载到ssh-agent并在密钥链中存储密码,您需要修改〜/ .ssh/config:

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我从这里获得了这些信息:

以上解决了ssh密钥的OP问题.如果您还要缓存HTTPS凭据,以下内容对Mac用户也很有用.您可以使用凭证帮助程序执行此操作.要告诉git使用osxkeychain帮助程序,请确保将其添加到您的~/.gitconfig(或~/.config/git/config).

[credential]
    helper = osxkeychain
Run Code Online (Sandbox Code Playgroud)

您可以从命令行设置此条目,而不是直接编辑文件:

$ git config --global credential.helper osxkeychain
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅这些链接(包括如何验证系统是否已osxkeychain安装帮助程序):

  • ssh-add -K为我做了诀窍.请注意,我在更新到macOS 10.12.3后开始体验这一点. (3认同)