通过单个端口隧道化多个端口

szx*_*zxk 5 ssh proxy ssh-tunneling port-forwarding

我想通过 SSH 隧道将本地机器的几个端口转发到远程机器。但是,我希望这发生在单个端口上。是否有可以在单个端口和多个应用程序之间进行多路复用的协议或工具?

编辑:我将很多端口从很多机器转发到一个远程,我想在每台机器的应用程序级别对它们进行多路复用,以在该远程上使用尽可能少的端口。我看到像 sshl 这样的解决方案可以多路复用某些协议,但我不知道任何可以以独立于协议的方式包装消息的通用解决方案。

Law*_*ceC 4

SSH 允许您在命令行上指定多个端口来建立隧道(示例来自此处):

$ ssh -L 10001:one.securedomain.com:3389 -L 10002:two.securedomain.com:3389

您是说您只想使用单个本地端口吗?

SSH 只是进行源端口 <-> 目标端口的映射。如果您想要 1 个源端口 <-> 多个目标端口,那么您就会遇到一个根本问题 - 例如,如果您将流量发送到本地端口 10001,那么任何东西(更不用说 SSH)应该如何知道您想要哪个目标端口?

某些协议具有这样的功能:作为有效负载传输的部分数据指定有效负载的目的地。HTTP 通过Host:标头来完成此操作。由于 SSH 采用“X 是我的工作而不是其他”的 Unix 哲学,因此它不会嗅探、解码或理解它所传输的流量。因此它无法帮助您,但在源或目标系统上运行的代理服务器可能会帮助您。对于 HTTP 以外的协议,您必须寻找或开发一个充当“多路复用”代理的服务 - 我认为如果您仔细观察的话,有 SMTP 和可能的 FTP 的实用程序。

一种解决方法是在 SSH 隧道上运行 OpenVPN 之类的东西,这样您就可以在流量到达另一端后显式控制路由等。