为什么 git 要求输入密钥密码,而 ssh 不要求?
Why does git asks for key passphrase when ssh does not?
我已经查看了几个关于为什么 git 每次都要求输入 SSH 密钥密码的问答,但我还没有找到一个描述我的情况的问答。与我的情况不同的是,我已经成功创建了一个ssh密钥,并将其添加到代理中,并且代理是运行ning。所以当我 运行:
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 每次都要求输入 SSH 密钥密码的问答,但我还没有找到一个描述我的情况的问答。与我的情况不同的是,我已经成功创建了一个ssh密钥,并将其添加到代理中,并且代理是运行ning。所以当我 运行:
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"
...