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

Docker部署GitLab后SSH可连接但git clone失败求助

问题排查:Docker部署GitLab后SSH克隆失败但SSH测试连接成功

问题概述

  • 执行git clone ssh://git@serverIP:5022/sungjinseo/test.git时,报错:ssh: connect to host serverIP port 5022: Connection refused
  • 但执行ssh -T git@serverIP -p 5022可成功连接,显示Welcome to GitLab, @sungjinseo!
  • 无法使用HTTP方式克隆,仅能通过IP访问GitLab页面(路由器限制服务器可用端口范围为5000-6000)
  • 服务器防火墙已关闭,提供了部署用的YAML文件截图

排查与解决步骤

1. 核对Docker端口映射配置

Docker部署GitLab时,容器内部默认SSH端口为22,需确保YAML中主机5022端口已正确映射到容器22端口:

  • 检查YAML的ports段,确认存在:
    ports:
      - "5022:22"
    
  • 若映射错误(如写成5022:5022),会导致GitLab内部SSH服务未监听对应端口,修正后重启容器:docker-compose restart

2. 配置GitLab对外暴露的SSH端口

GitLab需要知晓对外公开的SSH端口,否则内部转发或地址生成会异常:

  • 进入GitLab容器:docker exec -it <你的GitLab容器名> /bin/bash
  • 编辑配置文件/etc/gitlab/gitlab.rb,添加或修改:
    gitlab_rails['gitlab_shell_ssh_port'] = 5022
    
  • 重新配置GitLab:gitlab-ctl reconfigure
  • 重启服务:gitlab-ctl restart

3. 验证容器内SSH服务状态

确认容器内SSH服务正常运行:

  • 进入容器后执行:gitlab-ctl status sshd
  • 若状态不为run,启动服务:gitlab-ctl start sshd

4. 核对仓库的SSH克隆地址

登录GitLab网页,进入sungjinseo/test仓库,查看页面显示的SSH克隆地址,确认端口为5022。若显示默认22端口,说明GitLab未正确识别对外端口,回到步骤2重新配置。

5. 开启SSH调试定位细节

执行克隆时开启SSH verbose模式,获取详细错误日志:

GIT_SSH_COMMAND="ssh -v" git clone ssh://git@serverIP:5022/sungjinseo/test.git

从日志中可精准定位是连接阶段问题,还是认证后的仓库权限问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:22:06