我正在连接到一个 VPN,它的网关配置非常错误,基本上我能做的唯一有用的事情就是连接到ssh
VPN 内部为我的使用而设置的特定 Linux 主机,然后将该主机用作终端。 (端口转发和代理都scp
无法正常工作。)ssh
ssh
-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 内选择的子网的端口。
完美的东西是类似于sshuttle
ssh 端口转发接口的东西:
$ sshuttle -r user@linuxhost -L LOCALPORT:OTHERHOST:PORT
...
$ nc localhost LOCALPORT