我已经浏览了几个关于为什么git每次都要求SSH密钥密码短语的问题,但我还没有找到一个描述我的情况的问题。使我的情况不同的是,我已经成功地创建了ssh密钥,并将其添加到代理中,并且代理正在运行。所以当我运行:
ssh -T git@github.com
我立即得到成功消息"你已经成功认证,但GitHub不提供shell访问。"它不要求密码短语。
令人费解的是,在powershell中,当我导航到与该帐户相关的git repo,并运行这样的git命令:
cd ~/mygitrepo
git fetch
我被要求去Enter passphrase for key 'C:Usersme.sshgithub'
。
如果我输入密码,成功可以从回购取回。
为什么执行git
命令时提示输入口令,而执行ssh
命令时提示不输入口令?
额外的细节我正在运行Windows 10,在Windows终端中使用PowerShell。我每天使用ssh连接到各种远程,它从不要求密码短语。
取自~/.ssh/config
Host github.com
HostName github.com
User git
IdentityFile C:Usersme.sshgithub
取自~/mygitrepo/.git/config
[remote "origin"]
url = git@github.com:myuser/myrepo.git
运行一个git命令时,默认情况下它使用它自己的版本的ssh,未能与Windows ssh-agent。
查找二进制Windows使用的内容:
Powershell> where.exe ssh
CMD> where ssh
对我来说,结果是C:WindowsSystem32OpenSSH
。现在,通过在全局.gitconfig
文件中设置以下行,强制git使用该二进制文件:
[core]
sshCommand = "C:/WINDOWS/System32/OpenSSH/ssh.exe"
...