You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行git fetch等基础Git命令时偶发kex_exchange_identification错误

问题产生原因

该报错属于SSH连接建立阶段的链路重置问题,且随机复现,和SSH密钥权限、仓库权限无关,常见触发原因如下:

  • 网络层不稳定:本地网络波动、运营商路由抖动、出口IP动态变换,或是防火墙/IDS设备做了SSH连接频率限制,随机丢弃超出阈值的请求
  • GitHub侧限流:GitHub对同一IP的SSH连接请求有频率限制,短时间内发起多次SSH请求会被临时拦截,触发连接重置
  • SSH配置异常:本地SSH的密钥交换算法、超时参数配置不当,或是SSH代理/跳板机不稳定,导致连接建立过程随机中断
  • MTU不匹配:本地网络或中间路由的MTU值设置过大,SSH握手阶段的大包被丢弃,触发连接重置

排查与解决方法

第一步:验证网络连通性稳定性

  • 长时间执行ping命令观察丢包情况:
    Windows执行 ping github.com -t,Linux/macOS执行 ping github.com,如果丢包率超过1%,优先排查本地网络问题
  • 多次测试TCP 22端口连通性:执行 telnet github.com 22,观察是否随机出现连接失败,确认是否为端口被拦截问题

第二步:调整SSH配置

在本地~/.ssh/config文件(不存在则手动新建)中添加以下配置:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa # 替换为实际的私钥文件路径
  ServerAliveInterval 60
  ServerAliveCountMax 5
  KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
  TCPKeepAlive yes

配置完成后多次执行ssh git@github.com测试,观察是否还会随机报错。

第三步:切换Git连接协议验证

如果SSH协议持续不稳定,可以临时切换为HTTPS协议测试,执行命令修改远程仓库地址:
git remote set-url origin https://github.com/用户名/仓库名.git
修改后再次执行git fetch,如果HTTPS协议正常则可以确定是SSH链路相关问题。

第四步:排查网络设备限制

  • 临时关闭本地防火墙、杀毒软件后测试,确认是否为本地安全软件拦截了SSH请求
  • 如果使用公司网络,确认运维是否配置了SSH连接频率限制、端口拦截规则
  • 切换手机热点等其他网络环境测试,排除当前网络的规则限制问题

第五步:调整MTU值

如果上述方法都无效,可以尝试降低本地网络的MTU值,从默认1500修改为1400:

  • Windows:netsh interface ipv4 set subinterface "网络连接名" mtu=1400 store=persistent
  • Linux:sudo ifconfig 网卡名 mtu 1400
  • macOS:sudo networksetup -setMTU "网络服务名" 1400

内容的提问来源于stack exchange,提问作者Cissy Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:15:02