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

WSL2环境下克隆特定Git仓库失败问题排查求助

问题描述

运行Windows 10 22H2设备,在WSL2中部署Ubuntu 24.04 LTS系统,处于带代理和防火墙的企业网络环境。网络基础访问正常(ping、DNS、HTTP(S)、SSH均可用,APT能正常安装软件),但通过SSH密钥克隆部分Git仓库时失败,等待数分钟后报错:

Cloning into 'Foo'...
client_loop: send disconnect: Broken pipe
fatal: the remote end hung up unexpectedly
  • 用ssh -T连接Git服务器、nslookup主机名、ping服务器、curl访问网页均正常
  • 可正常克隆该Git服务器上的其他仓库
  • 同一设备的原生Windows、MSYS2、VMWare虚拟机环境下,均可正常克隆这些失败的仓库
  • 设置GIT_SSH_COMMAND=ssh -vvv运行Git,显示连接建立且认证成功,但最终仍出现远程端挂起错误
已尝试的无效修复方案
  • 在~/.ssh/config中配置:
    Host *
       ServerAliveInterval 600
       IPQoS throughput
    
  • 在/etc/wsl.conf中设置镜像网络模式并重启分发版:
    [wsl2]
    networkingMode=mirrored
    
  • 增大Git的http.postBuffer至1048576000
  • 将分发版MTU从1500调整为9000
  • 禁用主机系统防火墙
排查方向
  1. 调整SSH心跳参数
    尝试缩短SSH心跳间隔,避免长时间无数据传输被防火墙切断,在~/.ssh/config中添加:

    Host *
       TCPKeepAlive yes
       ServerAliveCountMax 3
       ServerAliveInterval 30
    
  2. 切换克隆目录到WSL2内部文件系统
    若之前克隆到Windows挂载目录(如/mnt/c),尝试克隆到WSL2内部路径(如~/),排查是否因跨文件系统IO阻塞导致连接超时。

  3. 使用Windows原生SSH客户端
    在WSL2中强制调用Windows的SSH执行Git操作,验证是否为WSL2原生OpenSSH的问题:

    export GIT_SSH_COMMAND="/mnt/c/Windows/System32/OpenSSH/ssh.exe"
    

    之后再执行克隆命令。

  4. 更新WSL2内核
    部分旧版WSL2内核存在TCP连接稳定性问题,执行以下命令更新内核:

    wsl --update
    

    更新完成后重启WSL。

  5. 调整Git传输配置
    尝试关闭压缩或减小SSH发送包大小,避免大数据包被防火墙拦截:

    git config --global core.compression 0
    git config --global ssh.maxSendPacket 1024
    

内容的提问来源于stack exchange,提问作者Joshua Schroijen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:13:09