我正在尝试通过隧道连接到专用网络上的计算机。我可以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 session 。
第一个命令:
ssh -N -L localhost:3306:destination:22 bridge-user@bridge-machine &
-N
:不创建桥接机的交互式登录,只需连接并进行端口转发。-L localhost:3306:destination:22
。安排通过此 ssh session 转发本地计算机端口 22 上收到的任何网络请求,并在bridge
上重新发出。由于bridge
可以路由到destination
,因此重新发出的请求将起作用。我们选择3306
因为我们需要一个当前未使用的端口号。我们使用22
作为目标,因为这是众所周知的 SSH 端口。bridge-user@bridge-machine
- 由于此 SSH session 在bridge
终止,因此我们需要bridge
凭据。&
- 在后台运行,以便我们可以发出第二个命令。
第二个命令:
ssh destination-user@localhost -p 3306
destination-user
- 由于此连接的端点是destination
,因此我们需要那里的凭据。@localhost
- 我们实际上正在连接到步骤 1 中建立的转发服务。-p 3306
- 步骤 1 中的命令安排在localhost:3306
上收到的任何请求都将从bridge
重新发出到destination:22
。因此,我们将localhost:3306
视为destination:22
的本地别名。
关于linux - 到另一个网络上的机器的 SSH 隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283326/