具有非标准 SSH 端口的 Gitlab(在具有 Iptable 转发的 VM 上)

Posted

技术标签:

【中文标题】具有非标准 SSH 端口的 Gitlab(在具有 Iptable 转发的 VM 上)【英文标题】:Gitlab with non-standard SSH port (on VM with Iptable forwarding) 【发布时间】:2013-09-02 06:07:52 【问题描述】:

我的gitlab 位于主机服务器上的虚拟机上。我使用非标准 SSH 端口(即766)访问虚拟机,然后 iptable 规则从host:766 转发到vm:22

所以当我创建一个新的仓库时,添加远程的指令提供了一个格式错误的 URL(因为它不使用 766 端口。例如,网络界面给了我这个:

格式错误

git 远程添加源 git@git.domain.com:group/project.git

而不是在组之前包含 :766/ 的 URL。

结构良好

git 远程添加源 git@git.domain.com:766/group/project.git

所以当我创建一个 repo 时,我必须手动进行修改,我的合作者也是如此。 我该如何解决?

【问题讨论】:

【参考方案1】:

在 Omnibus 打包版本中,您可以在 /etc/gitlab/gitlab.rb 文件中修改该属性:

gitlab_rails['gitlab_shell_ssh_port'] = 766

然后,您需要重新配置 GitLab:

# gitlab-ctl reconfigure

然后,您的 URI 将在 Web 界面中正确显示为 ssh://git@git.domain.com:766/group/project.git

【讨论】:

您还需要确保 ssh 被告知监听该端口,否则连接将被拒绝。默认是 /etc/ssh/sshd_config 除了reconfigure,我还必须运行gitlab-ctl restart,但在那之后,我在网络界面上的ssh链接被更新了。 使用官方gitlab docker容器时,使用的sshd配置文件也需要更改监听端口是:/assets/sshd_config 编辑端口后重启sshd使用:/etc/init.d /ssh 重启 如果你也编辑了/etc/ssh/sshd_config,别忘了重启sshd,例如service sshd restart. 在我的情况下不起作用,我在 ELB 后面的私有子网中的 ec2 中有一个 gitlab,当我使用 766 时,git 无法连接【参考方案2】:

如果您在 config/gitlab.yml 中正确配置 ssh_port,网页将显示正确的 repo url。

## GitLab Shell settings
gitlab_shell:
  ...
  # If you use non-standard ssh port you need to specify it
  ssh_port: 766

ps。 正确的网址是: ssh://git@git.domain.com:766/group/project.git

编辑:更改后您需要清除缓存等:

bundle exec rake cache:clear assets:clean assets:precompile RAILS_ENV=production

【讨论】:

这就是我正在做的事情,我在sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production' 输出中获得了正确的 URL,但在 Web 界面中却没有 似乎有一个缓存阻止了修改出现在 Web 界面中。不确定它是什么(sidekiq,gitlab) 假设这有点旧我有同样的问题......你声称这是由于“缓存”修改出现?你能澄清如何解决。谢谢。 以防万一有人遇到问题,@ÉdouardLopez 的 env:info 显示了正确的 url,但 Web 界面没有,如果你正在使用它,你应该重新启动 apache。它对我有用。我猜独角兽正在以某种方式缓存数据。 重新启动服务器为我修复了它(重新启动 nginx 本身没有),如果这对任何人都有帮助的话。【参考方案3】:

注意:这是在旧 Giltab 版本 (v5-v6) 上测试的,可能不适合现代实例。

您可以在两步过程中实现类似的行为:

1。编辑:config/gitlab.yml

在服务器上,将端口设置为您使用的端口:

ssh_port: 766

2。编辑~/.ssh/config

在你的机器上,添加以下与你的 gitlab 对应的部分:

Host sub.domain.com
        Port 766

限制

您需要在每个用户的计算机上重复此操作……

参考文献

GitLab and a non-standard SSH port

【讨论】:

@josch 答案是针对较旧版本的 Gitlab,例如 ~5-6 版

以上是关于具有非标准 SSH 端口的 Gitlab(在具有 Iptable 转发的 VM 上)的主要内容,如果未能解决你的问题,请参考以下文章

gitlab的docker安装,非标准端口,如何处理?

具有相同区域的多个 SSH TCP 端口 22 隧道

自定义 SSH 端口上的 Gitlab

gitlab修改ssh端口

gitlab修改ssh端口

通过 gitlab 上的端口 443 SSH 无法正常工作