You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04连接GitHub/GitLab SSH时报kex_exchange_identification错误

错误原因

从你提供的debug日志可以确认,TCP连接到GitLab的22端口已经建立成功,但在SSH密钥交换的初始阶段连接被远端重置,两个平台同时出现该问题,常见触发原因如下:

  • 网络运营商或本地路由、防火墙拦截了指向境外站点的22端口SSH流量,这是该类问题最常见的诱因
  • 本地系统的防火墙规则(iptables/ufw)限制了SSH出站连接
  • 本地SSH密钥权限异常,或公钥未正确上传到对应平台的账户配置中(该情况一般不会同时触发两个平台报错,概率较低)
  • 本地公网IP被两个平台同时临时限制,该场景概率极低
可行解决方案

方案1:切换SSH连接端口(优先尝试,适配22端口被拦截的场景)

GitHub和GitLab均支持通过443端口传输SSH流量,你可以修改本地SSH配置规避22端口拦截:

  1. 编辑~/.ssh/config文件,没有则新建该文件,加入如下配置:
Host github.com
  HostName ssh.github.com
  Port 443
  User git

Host gitlab.com
  HostName altssh.gitlab.com
  Port 443
  User git
  1. 保存文件后重新执行ssh -T git@github.com、ssh -T git@gitlab.com测试连通性即可。

方案2:排查本地网络与防火墙规则

  • 执行telnet gitlab.com 22测试22端口连通性,如果连接直接失败或很快断开,即可确认22端口被当前网络拦截
  • 执行sudo ufw status检查本地系统防火墙规则,确认没有限制出站22、443端口的规则
  • 切换其他网络环境(如手机热点)测试,如果切换后连接正常,说明是当前所用网络的运营商层面拦截了SSH流量

方案3:校验SSH密钥与权限

  • 确认你的~/.ssh/id_rsa.pub公钥内容已经正确上传到GitHub、GitLab的账户SSH密钥配置中
  • 执行如下命令修正SSH目录与文件权限,权限异常也会触发连接失败:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

如果以上方案均无法解决问题,你可以临时改用HTTPS协议进行Git仓库的推拉操作。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:54:04