我已经查看了几个关于为什么 git 每次都要求输入 SSH key 密码的问答,但我还没有找到一个描述我的情况的。让我的情况有所不同的是,我已经成功创建了一个 ssh key ,并将其添加到代理中,并且代理正在运行。所以当我运行时:
ssh -T git@github.com
我立即收到成功消息“您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。”它不要求输入密码。
令人困惑的是,在 powershell 中,当我导航到与该帐户关联的 git 存储库并运行如下 git 命令时:
cd ~/mygitrepo
git fetch
我被要求Enter passphrase for key 'C:\Users\me\.ssh\github'
。
如果我输入密码,我可以成功地从存储库中获取。
为什么我在运行 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"
...
关于git - 为什么 git 要求输入 key 密码而 ssh 不要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69430465/