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

Git(SSH)克隆/推送/拉取时挂起问题求助

这种SSH挂起的问题我之前也碰到过好几次,毕竟HTTPS能正常用,说明Git本身和网络连通性没啥大问题,大概率是SSH连接层面的小故障。咱们一步步来排查解决:

第一步:先确认是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.orgaltssh.bitbucket.org拿到最新的IP地址
  • 编辑hosts文件:
    • Linux/macOS:/etc/hosts
    • Windows:C:\Windows\System32\drivers\etc\hosts
  • 添加类似这样的内容(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

火山引擎 最新活动