SSH“反向”代理命令

kay*_*kay 3 networking ssh proxy tunnel

通常你有这样的设置:

Workstation -> Firewall -> Server
Run Code Online (Sandbox Code Playgroud)

您的工作站是否无法直接联系服务器,但必须先登录防火墙才能联系服务器。在此“简单”设置中,您可以在工作站上使用此设置:

Host server
    ProxyCommand ssh firewall nc %h %p
Run Code Online (Sandbox Code Playgroud)

现在我的问题:

强加给我的设置更加困难:

Workstation -> Intermediate <- Server
Run Code Online (Sandbox Code Playgroud)
  • 即我的Workstation可以登录到Intermediate并且Server可以登录到Intermediate
  • Intermediate无法打开到Server的 TCP 连接,但另一个方向是可能的。
  • 我无法在工作站服务器之间的任一方向打开 TCP 连接。数据包根本不会在 VLAN 中路由。
  • 我可以“物理地”访问Server,但我想坐在我的Workstation

现在,我如何从我的机器 SSH 到服务器?

gui*_*ido 5

使用 ssh 隧道相当容易;首先转到您的服务器机器并运行:

ssh -R 2222:localhost:22 intermediateuser@Intermediate
Run Code Online (Sandbox Code Playgroud)

这会在中间机器上打开端口 2222,将连接反向转发到服务器上的端口 22。

然后你可以

ssh user@Intermediate
Run Code Online (Sandbox Code Playgroud)

然后从那里

ssh serveruser@localhost -p 2222
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过以下方式将中间端口 2222 带到您的工作站:

ssh -L 2222:localhost:2222 intermediateuser@Intermediate
Run Code Online (Sandbox Code Playgroud)

然后:

ssh serveruser@localhost -p 2222
Run Code Online (Sandbox Code Playgroud)