一个IP 多个客人同一端口22

一个IP 多个客人同一端口22

我使用 Nginx 将端口 80 上的域重定向到正确的虚拟机,现在我想知道是否可以使用端口 22 上的 ssh 来执行此操作。通过端口 22 将所有 ssh 流量重定向到正确的来宾?

答案1

不,你不能那样做。它适用于 HTTP,因为该协议支持基于名称的虚拟主机. SSH 没有。

答案2

您可以通过 ssh 的ProxyCommand工具来完成此操作。将以下内容添加到您的$HOME/.ssh/config文件中。如果它不存在,则创建它,仅包含以下内容:

Host remoteserverX
    User userint
    ProxyCommand ssh userext@externalserver nc remoteserverX %p
Host remoteserverY
    User userint
    ProxyCommand ssh userext@externalserver nc remoteserverY %p

然后,您可以像这样连接到不同的内部远程服务器:

$ ssh remoteserverX

-or-

$ ssh remoteserverY

就该功能而言,这只是冰山一角。查看 U&L 问答,标题为:通过中间人服务器的 SSH 隧道 - 如何一步连接(使用密钥对)?, 更多细节。

笔记:上述方法使用了一个名为nc(netcat)的工具,该工具应该位于任何主要发行版的存储库中。

这与 Nginx 的重定向不完全相同,您通过外部系统隧道到达内部系统,但它具有类似的效果。

复杂的例子

  1. Host节,多个主持人。

    Host *.mydom.com *
        ProxyCommand ssh externalserver nc %h %p
    
  2. 一个“Hosts”节,适用于许多用户。

    将该Hosts节添加到系统/etc/ssh/ssh_config文件中,以便任何登录到该框的人都可以使用它。

相关内容