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

无法为GitLab Docker容器配置自定义SSH端口

GitLab Docker容器自定义SSH端口失败的原因分析

你遇到的问题核心是混淆了GitLab仓库地址显示端口和容器内SSH服务的实际监听端口,具体原因如下:

1. 容器内SSH服务默认监听22端口

GitLab容器中的sshd服务默认监听22端口,你设置gitlab_rails['gitlab_shell_ssh_port'] = 2424只是让GitLab在生成项目SSH克隆地址时显示2424端口,但容器内部的SSH服务根本没有修改监听端口。此时你做2424:2424的端口映射,容器内的2424端口没有任何服务在运行,自然会出现Connection refused错误。

2. GITLAB_OMNIBUS_CONFIG未生效的可能原因

你看到/etc/gitlab/gitlab.rb中相关配置仍为注释状态,大概率是因为:

  • 部分arm64架构的GitLab镜像(比如你用的yrzr/gitlab-ce-arm64v8)对GITLAB_OMNIBUS_CONFIG环境变量的解析逻辑存在差异,导致配置未正确写入gitlab.rb;
  • 你手动修改gitlab.rb后执行gitlab-ctl reconfigure,该命令会根据GITLAB_OMNIBUS_CONFIG重新生成配置文件,覆盖你手动修改的内容,所以之前的修改无效。

3. 正确自定义SSH端口的配置方式

如果要真正让GitLab容器使用2424作为SSH端口,需要同时修改两个配置:

  • 让容器内的sshd服务监听2424端口;
  • 让GitLab生成的仓库地址显示2424端口。

对应的Docker Compose配置应该补充sshd['port']设置:

services:
  gitlab:
    image: 'yrzr/gitlab-ce-arm64v8:latest'
    container_name: '<container_name>'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url '<external_url>'
        sshd['port'] = 2424  # 让容器内sshd监听2424
        gitlab_rails['gitlab_shell_ssh_port'] = 2424  # 让GitLab显示正确的SSH端口
    ports:
      - '2424:2424'
      # 其他必要端口映射...

你最后改用2424:22的映射方式能正常工作,是因为此时容器内的sshd仍监听22端口,外部2424端口直接转发到容器内的22端口,绕开了修改容器内sshd端口的步骤,这也是最简便的折中方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:33:15