Git(SSH)克隆/推送/拉取时挂起问题求助
这种SSH挂起的问题我之前也碰到过好几次,毕竟HTTPS能正常用,说明Git本身和网络连通性没啥大问题,大概率是SSH连接层面的小故障。咱们一步步来排查解决:
先别着急试Git命令,先手动测试SSH到BitBucket的连通性,在终端里跑这个命令:
ssh -T git@bitbucket.org
如果这个命令也无限挂起,那就能确定是SSH连接的问题,不是Git的锅;如果能正常返回logged in as [你的用户名].,那再回头检查Git的配置。
1. 防火墙/代理拦截了SSH端口(22端口)
很多公司防火墙或者本地代理会默认拦截22端口的SSH流量,BitBucket其实提供了备用的443端口(和HTTPS同端口,一般不会被拦),咱们修改SSH配置绕过去:
- 打开(没有就新建)
~/.ssh/config文件(Windows用户路径是C:\Users\[你的用户名]\.ssh\config) - 添加以下内容:
Host bitbucket.org Hostname altssh.bitbucket.org Port 443
保存后再跑一遍ssh -T git@bitbucket.org试试,要是能通,Git操作应该就正常了。
2. SSH密钥没被正确识别
虽然你说加载了密钥,但有时候SSH agent没自动加载,或者密钥权限不对导致被拒绝:
- 手动添加密钥到SSH agent:
ssh-add ~/.ssh/你的密钥文件名
(比如默认的是id_rsa,那就是ssh-add ~/.ssh/id_rsa)
- 检查密钥文件权限,必须是600(只有自己能读写),不然SSH会拒绝使用:
chmod 600 ~/.ssh/你的密钥文件名
3. DNS解析异常
有时候DNS解析BitBucket的域名出问题,导致SSH连不上,咱们可以手动绑定IP:
- 先ping一下
bitbucket.org和altssh.bitbucket.org拿到最新的IP地址 - 编辑hosts文件:
- Linux/macOS:
/etc/hosts - Windows:
C:\Windows\System32\drivers\etc\hosts
- Linux/macOS:
- 添加类似这样的内容(IP换成你ping到的):
18.205.93.0 bitbucket.org 18.205.93.1 altssh.bitbucket.org
4. SSH客户端版本兼容性问题
旧版本的OpenSSH可能和BitBucket的服务器有兼容性问题,试试更新你的SSH客户端:
- Linux:用包管理器更新
openssh-client - macOS:通过Homebrew更新或者升级系统自带的SSH
- Windows:换用Putty或者更新Git自带的OpenSSH
修改完配置后,先跑ssh -T git@bitbucket.org,如果看到类似logged in as [你的用户名]. You can use git or hg to connect to Bitbucket. Shell access is disabled.的提示,说明SSH连接正常了,再去试Git的clone/push/pull操作,应该就不会无限挂起了。
内容的提问来源于stack exchange,提问作者Clay Benson




