SSH 隧道到另一个网络上的机器

SSH Tunnel to a machine on another network

我正在尝试通过隧道连接到专用网络上的计算机。我可以 ssh 到专用网络上的其中一台机器。我的网络是10.4.0.x,私网是192.168.1.x。

我可以 ssh 到隧道机器,然后从那里 ssh 到目标机器没有问题。

但我只想从我的机器直接隧道到目的地。我正在使用此命令,但它已挂起。如何指定我尝试访问的机器的用户名?

ssh -N -L localhost:22:DESTINATION_MACHINE:22 BRIDGE_MACHINE_USER@BRIDGE_MACHINE

ssh -N -L localhost:22:192.168.1.4:22 bridge@10.4.0.41

您可以分两步完成。下面的第一个命令设置端口转发。第二个命令与最终目标机器建立 SSH 会话。

第一个命令:

ssh -N -L localhost:3306:destination:22 bridge-user@bridge-machine &
  • -N:不要创建 bridge-machine 的交互式登录,只需连接并进行端口转发。
  • -L localhost:3306:destination:22。通过此 ssh 会话和 bridge 上的 re-issued 安排转发在本地计算机上的端口 22 上收到的任何网络请求。由于 bridge 可以路由到 destination,因此 re-issued 请求将起作用。我们选择 3306 因为我们需要一个当前未被使用的端口号。我们使用 22 作为目标,因为这是 SSH 的 well-known 端口。
  • bridge-user@bridge-machine - 由于此 SSH 会话在 bridge 终止,我们需要 bridge 凭据。
  • & - 运行 在后台,以便我们可以发出第二个命令。

第二个命令:

ssh destination-user@localhost -p 3306
  • destination-user - 由于此连接的 end-point 是 destination,我们需要那里的凭据。

  • @localhost - 我们实际上连接的是第一步建立的转发服务

  • -p 3306 - 第 1 步中的命令安排在 localhost:3306 上收到的任何请求都将是 re-issued 从 bridgedestination:22.所以我们将 localhost:3306 视为 destination:22.

    的本地别名