为什么git要求key passphrase而ssh不要求?



我已经浏览了几个关于为什么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"
...

相关内容

  • 没有找到相关文章

最新更新