为什么ssh连接无需输入密钥口令而git操作时要求输入?
问题根因
你遇到的问题核心是Windows环境下存在两套独立的SSH客户端:
PowerShell默认调用系统内置的OpenSSH客户端,你已将密钥添加到对应ssh-agent的缓存中,所以执行ssh -T git@github.com不需要输入口令;而你安装的Git默认使用自带的MinGW版本SSH客户端,对应独立的ssh-agent进程,没有你缓存的密钥信息,因此执行Git操作时会要求输入密钥口令。
解决步骤
第一步 验证原因
在PowerShell中依次执行以下命令:
- 查看系统SSH路径:
where.exe ssh
正常输出会包含C:\Windows\System32\OpenSSH\ssh.exe - 查看Git当前使用的SSH配置:
git config --get core.sshCommand
如果输出为空,说明Git默认使用自带的SSH客户端,和系统SSH不属于同一套环境。
第二步 执行修复
推荐使用更省心的方案:让Git直接调用系统OpenSSH客户端,执行以下全局配置命令即可:git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
配置完成后再执行git fetch测试,就会复用系统ssh-agent中已经缓存的密钥,不需要重复输入口令。
可选验证
如果配置后仍有问题,执行ssh-add -l确认你的GitHub密钥已成功加载到系统ssh-agent中,输出中存在对应密钥指纹即为正常。
内容的提问来源于stack exchange,提问作者Kit Johnson
相关产品推荐
相关产品推荐

