特定主机的 OpenSSH 中继

特定主机的 OpenSSH 中继

目前,我负责一家公司的网络,该公司的不同子域都指向同一个 IP 地址,用于不同的目的。他们的网站是 example.com,Gitlab 实例是 gitlab.example.com。
目前,我们想将 Gitlab 实例移动到同一网络上的其他服务器。对于 Gitlab 的 Web-UI,我们使用 nginx 作为其他服务器 IP 的反向代理,并用于管理 SSL 证书和主机。
但现在我们遇到了一个问题,我们无法与该其他服务器建立 ssh 连接,因为 WAN 端口转发到 Web 服务器而不是新的 gitlab 服务器,我们需要这个指向 Web 服务器的端口。但由于我们拥有的项目数量,我们无法更改端口。(我们没有时间在 git 中重新配置所有这些项目)

有没有可能让 Web 服务器充当 gitlab 服务器的中继?这样每个到 gitlab.example.com 的连接都会转发到这个特定的服务器?

感谢您的帮助!!

答案1

简单的答案如下:

  1. 将非 gitlab 服务器的命令和控制 SSH 端口更改为 2222,以免发生端口冲突
  2. 安装 HA Proxy 并在端口 22 设置 L4(TCP,不是 HTTP)监听器
  3. 将 HA Proxy 池的后端设置为 gitlab 服务器,端口 22

这会将所有 SSH(端口 22)流量从外部服务器重定向到内部服务器。

这也可以通过 IPTables 的 DNAT/SNATing 来实现,但它比上面的解决方案复杂得多。以下是一个未经测试的示例:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to <gitlabIP>:22 iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to <gitlabIP>:22 iptables -t nat -A POSTROUTING -p tcp -d <gitlabIP> --dport 22 -j MASQUERADE

相关内容