Windows下非默认id_rsa密钥场景:SSH验证GitHub成功但Git克隆仓库失败
Windows下非默认id_rsa密钥场景:SSH验证GitHub成功但Git克隆仓库失败
遇到这种SSH手动验证能通过,但Git克隆却报权限拒绝的情况,确实有点让人摸不着头脑。从你提供的信息来看,核心问题大概率出在Git for Windows默认使用的SSH客户端和你手动验证时用的不是同一个,导致它没读取到ssh-agent里的密钥。
先帮你梳理下关键现象:
- 用Windows自带的
ssh.exe(路径C:\Windows\System32\OpenSSH\ssh.exe)执行ssh -vT git@github.com时,成功通过agent里的ED25519密钥验证 - 但用Git克隆时,却提示
git@github.com: Permission denied (publickey) - WSL里能正常克隆,因为WSL用的是自己独立的OpenSSH环境,和你手动验证的逻辑完全一致
问题根源
Git for Windows默认会自带一套独立的OpenSSH客户端(路径通常是C:\Program Files\Git\usr\bin\ssh.exe),这套客户端可能没有关联到Windows系统的ssh-agent,或者没读取到你已经添加的密钥。而你手动验证用的是Windows系统安装的OpenSSH,两者环境不统一,就出现了“验证成功但克隆失败”的矛盾现象。
解决步骤
检查当前Git使用的SSH客户端
打开PowerShell执行:git config --get core.sshCommand如果返回为空,或者是Git自带的ssh路径(比如
C:\Program Files\Git\usr\bin\ssh.exe),那就确认是这个问题。配置Git使用Windows系统的OpenSSH
执行以下命令,让Git调用和你手动验证时相同的SSH客户端:git config --global core.sshCommand "C:\Windows\System32\OpenSSH\ssh.exe"再次尝试克隆
现在重新执行克隆命令,应该就能正常拉取仓库了:git clone git@github.com:practichem/arista-protocolbridge.git
额外验证(可选)
如果还是有问题,可以用verbose模式查看克隆时的SSH交互细节,确认Git是否在使用agent里的密钥:
git clone -v git@github.com:practichem/arista-protocolbridge.git
查看输出里是否有类似Offering public key: nick@Nix-XPS-XIII ED25519 SHA256:... agent的日志,要是有,说明密钥已经被正确使用了。
备注:内容来源于stack exchange,提问作者ndemarco




