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

GitLab SSH连接超时排查(含Cloudflare与客户端证书环境)

GitLab SSH连接超时问题排查

问题背景

GitLab服务器WebUI通过Cloudflare和客户端证书做安全防护,使用SSH方式连接时出现超时。执行命令:

ssh -Tvvv git@gitlab.domain

调试日志

OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /home/userdir/.ssh/config
debug1: /home/userdir/.ssh/config line 1: Applying options for gitlab.domain
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/userdir/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/userdir/.ssh/known_hosts2'
debug2: resolving "gitlab.domain" port 12345
debug3: resolve_host: lookup gitlab.domain:12345
debug3: ssh_connect_direct: entering
debug1: Connecting to gitlab.domain [123.123.123.123] port 12345.
debug3: set_sock_tos: set socket 3 IP_TOS 0x10
debug1: connect to address 123.123.123.123 port 12345: Connection timed out
debug1: Connecting to gitlab.domain [123.123.123.123] port 12345.
debug3: set_sock_tos: set socket 3 IP_TOS 0x10

SSH配置文件(~/.ssh/config)

Host gitlab.domain
  HostName gitlab.domain
  User gitlabuser
  Port 12345
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/git

(对应账户已存储该密钥)


可能的原因及排查方向

  • Cloudflare代理拦截SSH端口:Cloudflare默认仅代理Web相关端口(80/443等),如果gitlab.domain的解析记录被Cloudflare代理(橙色云朵标识),且未配置对应12345端口的转发规则,SSH请求会被Cloudflare节点拒绝,导致超时。需确认SSH端口的DNS记录是否直接指向服务器真实IP,而非Cloudflare节点。

  • 防火墙/安全组端口未开放:

    • 本地防火墙(如ufw、iptables)可能限制了12345端口的出站流量;
    • 服务器端防火墙或云服务商安全组未开放12345端口的入站规则,导致请求无法到达SSH服务;
    • 可通过telnet gitlab.domain 12345或nc -zv gitlab.domain 12345测试端口连通性。
  • DNS解析指向错误IP:日志中解析到的123.123.123.123可能是Cloudflare的CDN节点IP,而非GitLab服务器的真实IP。若SSH流量被导向CDN节点但未做端口转发,必然超时。需检查域名的A/AAAA记录,确保SSH使用的记录指向服务器真实IP。

  • SSH服务配置异常:

    • 确认服务器端sshd是否监听12345端口:查看/etc/ssh/sshd_config中的Port配置;
    • 检查sshd服务是否正常运行:执行systemctl status sshd;
    • 确认sshd_config中是否允许git或gitlabuser登录:检查AllowUsers、DenyUsers等配置项。
  • SSH配置文件与命令行参数冲突:配置文件中指定的User是gitlabuser,但执行命令时用的是git@gitlab.domain,SSH会优先使用命令行的git用户。若服务器上无git用户或该用户未配置对应密钥,即使端口连通也会出现问题(当前日志是超时,但此配置不一致需修正)。

  • 网络链路故障:本地网络到服务器IP的12345端口存在路由阻塞、运营商限制等问题,可尝试更换网络(如手机热点)测试,或在服务器上抓包确认是否收到SSH请求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:27:26