我使用 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 的重定向不完全相同,您通过外部系统隧道到达内部系统,但它具有类似的效果。
复杂的例子
一
Host
节,多个主持人。Host *.mydom.com * ProxyCommand ssh externalserver nc %h %p
一个“Hosts”节,适用于许多用户。
将该
Hosts
节添加到系统/etc/ssh/ssh_config
文件中,以便任何登录到该框的人都可以使用它。