首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反向SSH隧道

反向SSH隧道
EN

Unix & Linux用户
提问于 2016-08-12 05:54:01
回答 1查看 3.1K关注 0票数 3

我有一个gitlab服务器在我的本地网络和一个服务器,我可以ssh从我的网络之外。

是否有一种方法可以将服务器配置为SSH,以便当我使用:

ssh git@git.mypublicserver.com

它把它发送到本地网络上的Gitlab服务器上?有点像Nginx反向代理,但使用ssh。

编辑:

我环顾四周,发现了一个这里,它看起来像我想要的东西。

通过负载均衡器进行访问,如果您想提供更标准的git体验,您可以手动>设置并配置外部负载均衡器以指向给定的GitLab节点。这将在> GitLab节点上将通信从端口22路由到端口2222。然后,可以将DNS记录指向负载均衡器。

这看起来像我想要做的,但我如何做到这一点呢?

编辑2:

这是一张图片,希望能澄清我想做的事情。

(这些红线也应该通过互联网传播。)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-08-12 17:08:58

像nginx这样的HTTP服务器能够基于主机名进行代理,因为它是在请求的HTTP/1.1主机头中发送的。SSH没有虚拟主机的概念,客户端根本不发送主机名。

你有三个选择:

  • 使用端口转发使您的gitlab服务器直接可用。
  • 通过(附加的) IPv4或IPv6地址使您的gitlab服务器可用。
  • 在您的网络中创建一个SSH隧道,并通过这个隧道将SSH连接到您的git服务器。

端口转发

这可能是干扰“公共服务器”的最简单方法。设置网关将端口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/configgit@git.example.git:repo.git

代码语言:javascript
复制
Host git.example.com
    Port 2222

附加IPv4或IPv6地址

如果您有一个家庭网络,获得IPv4地址可能是不可能的,但一些业务提供商这样做。如果您的网络支持IPv6 (端到端),那么您只需使用正常的路由,而不需要麻烦的代理或NAT黑客。

SSH隧道

可以使用ProxyCommand选项指定代理到git.example.com的SSH连接的命令。在您的示例中,“公共服务器”是代理,因此命令应该连接到该服务器。

让我们从~/.ssh/config的配置片段开始:

代码语言:javascript
复制
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客户端。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/302928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档