具有非标准 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 上)的主要内容,如果未能解决你的问题,请参考以下文章