连接Bitbucket时报kex_exchange_identification: write: Broken pipe错误如何解决
根因分析
你提供的SSH调试日志显示,本地已经成功和Bitbucket的22端口建立TCP连接,但在密钥交换初始化阶段连接被强制断开,且同系统的其他设备操作正常,可排除Bitbucket服务端故障、SSH密钥本身配置错误的问题,故障点集中在故障设备的本地网络、系统权限、安全规则层面。
解决方案
按优先级从高到低尝试以下操作:
1. 更换SSH连接端口(最高概率解决)
绝大多数该类报错都是本地网络运营商、公司防火墙、VPN/代理工具封禁了22端口的出站请求导致,可改用Bitbucket官方提供的SSH 443备用端口:
- 打开本地SSH配置文件
~/.ssh/config,添加以下专属配置:
Host bitbucket.org HostName altssh.bitbucket.org Port 443 User git UseKeychain yes IdentityFile ~/.ssh/id_rsa
- 保存后执行
ssh -T git@bitbucket.org测试连通性即可。
2. 修复SSH文件权限
Mac系统对SSH相关文件的权限要求严格,权限过高会触发SSH安全机制主动断开连接:
- 执行以下命令修复所有SSH相关文件权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub chmod 644 ~/.ssh/config
- 重启SSH Agent并重新加载密钥:
killall ssh-agent eval "$(ssh-agent -s)" ssh-add -K ~/.ssh/id_rsa
- 再次测试SSH连接即可。
3. 排查本地安全拦截规则
故障设备的系统防火墙、第三方安全软件(杀毒、终端安全管理工具等)可能主动拦截了SSH出站请求:
- 临时关闭系统防火墙:打开「系统偏好设置」-「安全性与隐私」-「防火墙」,选择关闭防火墙后测试连接。如果恢复正常,将SSH添加到防火墙放行白名单即可。
- 临时退出所有第三方安全软件、VPN/代理工具后再测试连接。
4. 修复DNS解析异常
如果本地DNS解析到异常的Bitbucket节点IP,也会导致连接断开:
- 执行
nslookup bitbucket.org,对比另一台正常设备的解析结果,如果IP段不一致,将本地DNS修改为公共DNS(8.8.8.8、114.114.114.114),执行以下命令刷新DNS缓存:
sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder
- 再次测试连接即可。
内容的提问来源于stack exchange,提问作者Daniel Western
相关产品推荐
相关产品推荐

