You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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,两者环境不统一,就出现了“验证成功但克隆失败”的矛盾现象。

解决步骤

  1. 检查当前Git使用的SSH客户端
    打开PowerShell执行:

    git config --get core.sshCommand
    

    如果返回为空,或者是Git自带的ssh路径(比如C:\Program Files\Git\usr\bin\ssh.exe),那就确认是这个问题。

  2. 配置Git使用Windows系统的OpenSSH
    执行以下命令,让Git调用和你手动验证时相同的SSH客户端:

    git config --global core.sshCommand "C:\Windows\System32\OpenSSH\ssh.exe"
    
  3. 再次尝试克隆
    现在重新执行克隆命令,应该就能正常拉取仓库了:

    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

火山引擎 最新活动