通过哑 shell 连接多路复用 TCP 连接?

通过哑 shell 连接多路复用 TCP 连接?

我正在连接到一个 VPN,它的网关配置非常错误,基本上我能做的唯一有用的事情就是连接到sshVPN 内部为我的使用而设置的特定 Linux 主机,然后将该主机用作终端。 (端口转发和代理都scp无法正常工作。)sshssh-D

我想使用此连接临时修复 VPN 内部不同主机和我的笔记本电脑之间的端口转发。

我已经能够使用以下命令进行设置socat

$ socat TCP4-LISTEN:54321,bind=localhost,fork SYSTEM:"ssh user@linuxhost nc otherhost 54321"

这将在我的本地端口 54321 上创建一个侦听器,并通过ssh和将新连接转发到远程主机nc。虽然不太美观,但有用

问题是,这要求每个与远程主机的新连接都进行新的 SSH 连接协商,这会使速度减慢几秒钟。

我正在尝试弄清楚是否有办法通过单个ssh连接多路复用多个侦听器。(如果需要,我可以运行socat而不是nc在远程端运行。)

更新:我发现穿梭巴士,这是解决这个问题的一个非常巧妙的方法:

$ sshuttle -r user@linuxhost OTHERHOST_IP 
...
$ nc OTHERHOST_IP PORT   # works via transparent proxy

不过,我对 sshuttle 有点怀疑,因为它太聪明了:它试图透明地进行代理,并允许访问任何VPN 内选择的子网的端口。

完美的东西是类似于sshuttlessh 端口转发接口的东西:

$ sshuttle -r user@linuxhost -L LOCALPORT:OTHERHOST:PORT
...
$ nc localhost LOCALPORT

相关内容