反向 ssh 隧道侦听错误的接口

jig*_*fox 6 ssh tunneling ssh-tunnel

我正在使用防火墙后面的服务器。我已经建立了一个到互联网中间服务器的 ssh 隧道,如下所示:

remoteuser@behind_fw$ ssh -N -f -R 10002:localhost:22 middleuser@middle
Run Code Online (Sandbox Code Playgroud)

但是我无法直接通过此服务器连接,这不起作用:

user@local$ ssh remoteuser@middle -p 10002
Run Code Online (Sandbox Code Playgroud)

我必须分两步连接:

user@local$ ssh middleuser@middle
middleuser@middle$ ssh remoteuser@localhost -p 10002
Run Code Online (Sandbox Code Playgroud)

netstat -l中间的输出:

tcp        0      0 localhost:10002         *:*                     LISTEN
Run Code Online (Sandbox Code Playgroud)

但它应该是这样的:

tcp        0      0 *:10002                 *:*                     LISTEN
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

and*_*dol 11

这是在远程服务器上打开的隧道,该服务器需要在其 /etc/ssh/sshd_config中将 GatewayPorts设置为yes

根据服务器拥有的用户类型,您可能希望使用“匹配”选项来限制您的用户使用该功能。

Match User middleuser
  GatewayPorts yes
Run Code Online (Sandbox Code Playgroud)

请注意,您可能希望在 sshd_config 的末尾添加此 Match 块,因为 Match 块会一直持续到另一个块开始或文件结束。

话虽如此,不如尝试一下我认为更清洁的解决方案怎么样?

user@local$ ssh -N -f -L 10002:behind_fw:22 middleuser@middle
user@local$ ssh remoteuser@localhost -p 10002
Run Code Online (Sandbox Code Playgroud)