【问题标题】:Gitlab with non-standard SSH port (on VM with Iptable forwarding)具有非标准 SSH 端口的 Gitlab(在具有 Iptable 转发的 VM 上)
【发布时间】: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 时,我必须手动进行修改,我的合作者也是如此。 我该如何解决?

【问题讨论】:

    标签: configuration ssh virtual-machine iptables gitlab


    【解决方案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
    

    限制

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

    参考文献

    【讨论】:

    • @josch 答案是针对较旧版本的 Gitlab,例如 ~5-6 版
    猜你喜欢
    • 2020-01-01
    • 2016-03-25
    • 2020-04-09
    • 2013-05-10
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多