繁体   English   中英

为什么 git 要求密钥密码,而 ssh 不要求?

[英]Why does git asks for key passphrase when ssh does not?

我浏览了几个关于为什么 git 每次都要求输入 SSH 密钥密码的问答,但我还没有找到一个描述我的情况的。 让我的情况不同的是,我已经成功创建了一个 ssh 密钥,将其添加到代理中,并且代理正在运行。 所以当我运行时:

ssh -T git@github.com

我立即收到成功消息“您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。” 它不要求密码。

令人困惑的是,在 powershell 中,当我导航到与该帐户关联的 git 存储库并运行 git 命令时,如下所示:

cd ~/mygitrepo
git fetch

我被要求Enter passphrase for key 'C:\Users\me\.ssh\github'

如果我输入密码,我就可以成功地从回购中获取。

为什么在运行 git 命令时要求我输入密码,而在运行git命令时ssh要求我输入密码?

额外的细节

我正在运行 Windows 10,在 Windows 终端内使用 PowerShell。 我每天使用 ssh 连接到各种遥控器,它从不要求输入密码。

来自 ~/.ssh/config 的片段

Host github.com
    HostName github.com
    User git
    IdentityFile C:\Users\me\.ssh\github

来自 ~/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:\Windows\System32\OpenSSH 现在通过在全局.gitconfig文件中设置以下行来强制 git 使用该二进制文件:

[core]
    sshCommand = "C:/WINDOWS/System32/OpenSSH/ssh.exe"
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM