我有一个gitlab服务器在我的本地网络和一个服务器,我可以ssh从我的网络之外。
是否有一种方法可以将服务器配置为SSH,以便当我使用:
ssh git@git.mypublicserver.com
它把它发送到本地网络上的Gitlab服务器上?有点像Nginx反向代理,但使用ssh。
我环顾四周,发现了一个这里,它看起来像我想要的东西。
通过负载均衡器进行访问,如果您想提供更标准的git体验,您可以手动>设置并配置外部负载均衡器以指向给定的GitLab节点。这将在> GitLab节点上将通信从端口22路由到端口2222。然后,可以将DNS记录指向负载均衡器。
这看起来像我想要做的,但我如何做到这一点呢?
这是一张图片,希望能澄清我想做的事情。
(这些红线也应该通过互联网传播。)

发布于 2016-08-12 17:08:58
像nginx这样的HTTP服务器能够基于主机名进行代理,因为它是在请求的HTTP/1.1主机头中发送的。SSH没有虚拟主机的概念,客户端根本不发送主机名。
你有三个选择:
这可能是干扰“公共服务器”的最简单方法。设置网关将端口2222转发到192.168.2.26:22。然后使用ssh -p2222 git@git.example.com进行连接。对于git,使用像ssh://git@git.example.com:2222/repo.git这样的URL。
或者,如果您创建一个包含以下内容的ssh://git@git.example.com/repo.git文件,则只需使用~/.ssh/config或git@git.example.git:repo.git:
Host git.example.com
Port 2222如果您有一个家庭网络,获得IPv4地址可能是不可能的,但一些业务提供商这样做。如果您的网络支持IPv6 (端到端),那么您只需使用正常的路由,而不需要麻烦的代理或NAT黑客。
可以使用ProxyCommand选项指定代理到git.example.com的SSH连接的命令。在您的示例中,“公共服务器”是代理,因此命令应该连接到该服务器。
让我们从~/.ssh/config的配置片段开始:
Host git.example.com
ProxyCommand ssh -W %h:%p username@example.com在这个片段中,-W %h:%p选项将扩展为-W git.example.com:22,并将标准输入和输出重定向到所述主机(git.example.com)。这使您的本地SSH客户端能够与您的gitlab服务器对话。您可以再次使用任何URL,如git@git.example.com:repo.git,代理将透明到git客户端。
https://unix.stackexchange.com/questions/302928
复制相似问题