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

标签 linux ssh tunnel

我正在尝试通过隧道连接到专用网络上的计算机。我可以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/

相关文章:

ssh - 在远程 ssh session 中启动 ssh-agent

mysql - 代理/中继 mysql 连接(以便服务器看起来在本地主机上)

c# - 一个单一项目中的 WinApi+LinuxApi

linux - 自动杀死进程 - linux

python - 将不同服务器上的 MySQL Server 数据库中的表复制到我的计算机

Ruby SSH 禁用分页

java - Java如何隧道SSL代理

proxy - 使用 Envoy 在网络之间设置隧道

javascript - 排列/格式化 html 和 js 代码

linux - 与 ssh 一起使用时看不到 nohup 命令的输出