Ubuntu WSL终端无法ping通github.com且git clone异常排查
排查方案
跨环境部分站点ping超时排查
- 先验证DNS解析结果:分别在Windows CMD执行
nslookup github.com、WSL Ubuntu执行dig github.com、手机端用网络工具查询github.com、duckduckgo.com的解析IP,若返回的IP不属于对应站点官方公开网段、或直接返回无效地址,属于DNS污染问题。可临时手动将设备DNS修改为公共DNS(如8.8.8.8、1.1.1.1)后重试ping,若改DNS后仍解析到错误IP,说明是运营商链路层面的污染,和本地设备配置无关。 - 验证路由链路:Windows下执行
tracert github.com、Linux/WSL下执行traceroute github.com查看路由跳数,若在境内运营商节点就开始出现连续丢包无响应,属于路由黑洞/链路拦截,这类问题会导致对应站点的ICMP、TCP连接异常,和终端类型、系统版本无关,和跨设备跨网络测试的现象吻合。
注:部分站点默认会禁用ICMP回包,ping超时本身不能直接判定站点不可达,但跨WiFi、移动网络、多系统都出现相同超时,优先排查链路和DNS问题。
WSL2环境SSH方式git clone卡住排查
因为Windows下Git Bash、GitHub Desktop均可正常克隆,排除GitHub服务端、账号权限、本地网络全局拦截的问题,故障点集中在WSL2自身的网络、配置层面,按以下顺序排查:
- 校验WSL2 DNS配置:WSL2默认自动生成的
/etc/resolv.conf经常出现继承失效问题,先执行cat /etc/resolv.conf查看nameserver地址,若为无效内网网关地址,按以下步骤修复:- 编辑WSL内的
/etc/wsl.conf,写入配置关闭自动生成resolv文件:[network] generateResolvConf = false - 在Windows终端执行
wsl --shutdown关闭WSL后重新启动 - 手动编辑
/etc/resolv.conf,写入有效公共DNS地址,例如nameserver 8.8.8.8,保存后重试解析github.com
- 编辑WSL内的
- 排查代理配置冲突:执行
env | grep -i proxy查看WSL内的环境变量,若存在失效的http_proxy、https_proxy、ALL_PROXY配置,先执行unset http_proxy https_proxy ALL_PROXY清空变量后重试克隆。如果Windows端运行了代理软件,需要确认代理开启了允许局域网连接,且WSL内的代理地址指向WSL网关对应的Windows主机IP,不要填127.0.0.1(WSL的NAT模式下127.0.0.1是WSL自身,不是Windows主机)。 - 校验SSH连通性与配置:执行
ssh -T git@github.com -v查看详细连接日志,定位卡顿时点:- 若卡在22端口连接阶段,说明SSH默认22端口被拦截,编辑
~/.ssh/config写入以下配置,让GitHub SSH走443端口:Host github.com Hostname ssh.github.com Port 443 User git - 若卡在密钥认证阶段,先修正SSH目录权限:执行
chmod 700 ~/.ssh、chmod 600 ~/.ssh/id_rsa(对应你使用的私钥文件),再确认WSL内生成的SSH公钥已经添加到GitHub账号的SSH密钥列表中。
- 若卡在22端口连接阶段,说明SSH默认22端口被拦截,编辑
- 校验Git全局配置:执行
git config --global --list查看是否存在错误的代理配置、URL重写规则,若存在多余的http/https代理配置,执行git config --global --unset http.proxy、git config --global --unset https.proxy清空后重试。
内容的提问来源于stack exchange,提问作者Nole
相关产品推荐
相关产品推荐

