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

Git通过Wi-Fi推送失败报Broken pipe错误,以太网可正常使用

解决OSX 10.13 Wi-Fi下Git Push SSH连接断开的问题

我之前在OSX 10.14上碰到过几乎一模一样的问题,折腾了好一阵才搞定,给你几个亲测有效的解决思路:

1. 优化SSH连接稳定性(最常见的解决办法)

Wi-Fi环境下的SSH连接很容易因为长时间无数据传输触发超时,导致packet_write_wait: Broken pipe错误。你可以通过修改SSH配置来添加心跳包:

  • 打开终端,编辑(或新建)~/.ssh/config文件:
    nano ~/.ssh/config
    
  • 添加以下配置内容:
    Host *
      ServerAliveInterval 60
      ServerAliveCountMax 3
    
    这个设置会让SSH客户端每隔60秒向服务器发送一个心跳包,连续3次失败才断开连接,能有效避免Wi-Fi下的超时断开。

2. 临时切换到HTTPS协议排查问题

如果怀疑是Wi-Fi环境限制了22端口,你可以先切换到HTTPS协议推送,验证是不是SSH端口的问题:

  • 查看当前远程仓库地址:
    git remote -v
    
  • 将SSH地址改为HTTPS格式(比如从git@xxx.xx.xxx.xxx:your-repo.git改成https://xxx.xx.xxx.xxx/your-repo.git):
    git remote set-url origin https://xxx.xx.xxx.xxx/your-repo.git
    
  • 尝试执行git push,如果能成功,说明确实是Wi-Fi下的SSH端口被限制了。

3. 重置OSX的Wi-Fi网络配置

有时候系统的网络配置缓存会导致奇怪的端口限制,重置Wi-Fi配置试试:

  • 打开「系统偏好设置」→「网络」,选中Wi-Fi选项;
  • 点击左下角的齿轮图标,选择「删除配置」,然后重新连接你的Wi-Fi网络。

4. 检查系统防火墙设置

OSX的防火墙可能会针对Wi-Fi网络设置了特殊规则:

  • 打开「系统偏好设置」→「安全性与隐私」→「防火墙」;
  • 临时关闭防火墙,然后尝试git push,如果能成功,说明是防火墙阻止了Wi-Fi下的SSH连接;
  • 你可以在防火墙的「防火墙选项」里,添加允许gitssh进程通过Wi-Fi网络的规则。

5. 排查Wi-Fi路由器的限制

如果换了两个Wi-Fi都出现问题,也可能是路由器层面的端口限制:

  • 登录你的路由器后台(通常是192.168.1.1或类似地址),检查是否有针对22端口的防火墙或端口转发规则;
  • 尝试重启路由器,很多临时的路由器故障会导致这类连接问题;
  • 如果路由器确实封了22端口,可以联系服务器管理员将SSH服务切换到其他端口(比如2222),然后在本地~/.ssh/config里指定端口:
    Host xxx.xx.xxx.xxx
      Port 2222
    

6. 先测试SSH连接稳定性

在推送前,先测试SSH连接是否能稳定保持:

ssh -T git@xxx.xx.xxx.xxx

如果这个连接过程中也出现断开,那问题肯定出在SSH连接的稳定性上,重点优化前面的心跳配置或排查路由器问题。

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

火山引擎 最新活动