GitLab SSH连接始终超时(已尝试更换SSH端口)
解决GitLab SSH连接建立后超时的问题
问题分析
从你提供的调试日志来看,TCP连接已成功建立到altssh.gitlab.com:443,但在SSH密钥交换阶段超时。结合你私人设备可正常连接、公司设备HTTPS访问GitLab无问题的情况,核心原因大概率是公司防火墙的深度协议检测拦截了SSH流量:防火墙允许443端口的TCP连接,但会识别并阻断非HTTPS协议的流量。
解决方案
1. 将SSH流量伪装为HTTPS(绕过协议检测)
修改~/.ssh/config,用SSL封装SSH流量,让其看起来和普通HTTPS请求一致:
Host gitlab.com Hostname gitlab.com User git Port 443 PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 ProxyCommand openssl s_client -connect %h:%p -quiet
修改后执行ssh -T git@gitlab.com测试,若防火墙仅做协议检测,此方法大概率生效。
2. 通过公司HTTPS代理转发SSH
如果公司要求通过代理访问外部网络,可配置SSH走代理:
- 先安装代理工具:
sudo apt install connect-proxy - 编辑
~/.ssh/config(替换proxy-host和proxy-port为公司实际代理地址):
Host gitlab.com Hostname gitlab.com User git Port 22 PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 ProxyCommand connect -H proxy-host:proxy-port %h %p
3. 调整WSL网络模式
WSL默认NAT模式可能和Windows防火墙/代理冲突,尝试切换到桥接模式:
- 打开Windows管理员终端,执行:
wsl --shutdown # 替换"以太网"为你的物理网卡名称,可在Windows设置-网络中查看 netsh interface ipv4 set interface "以太网" metric=10 wsl --set-version Ubuntu-22.04 2
- 重新启动WSL后测试SSH连接。
4. 联系公司IT部门
若以上方法均无效,说明公司防火墙规则严格,需申请IT部门开放GitLab SSH相关流量,可提供GitLab官方公布的IP范围及端口说明。
验证方式
每次修改配置后,执行ssh -Tvvv git@gitlab.com,若日志中出现Welcome to GitLab, @你的用户名!则说明连接成功。
内容的提问来源于stack exchange,提问作者lukeflo
相关产品推荐
相关产品推荐

