【问题标题】:SSH Tunnel to a machine on another network [closed]SSH隧道到另一个网络上的机器[关闭]
【发布时间】:2018-03-14 16:43:13
【问题描述】:

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

【问题讨论】:

  • 我推断所有相关机器都在 3306 端口上运行 ssh 服务器。对吗?还是他们在标准 ssh 端口 22 上运行 ssh 服务器?
  • 不,它在标准端口 22 上
  • @Robᵩ 如何指定目标机器的用户名?
  • @Rob 当我使用 sudo 运行上述命令时,我可以 ssh 到隧道机器上,但随后出现错误 could not request local forwarding
  • 您在连接到目标机器的ssh 命令中指定目标机器的用户名——这里没有列出。请参阅我的答案以获得完整的讨论。

标签: linux ssh tunnel


【解决方案1】:

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

第一个命令:

ssh -N -L localhost:3306:destination:22 bridge-user@bridge-machine &
  • -N:不要创建交互式登录到桥接机,只需连接并进行端口转发。
  • -L localhost:3306:destination:22。安排通过此 ssh 会话转发在本地计算机上的端口 22 上收到的任何网络请求,并在 bridge 上重新发出。由于bridge 可以路由到destination,因此重新发出的请求将起作用。我们选择3306,因为我们需要一个当前未使用的端口号。我们使用22 作为目标,因为这是众所周知的 SSH 端口。
  • bridge-user@bridge-machine - 由于此 SSH 会话在 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 的本地别名。

【讨论】:

  • 我是否还必须提供密码才能登录bridge-machine
  • 我正在尝试 ssh -N -L localhost:3306:192.168.1.4:22 bridge@10.4.0.41 & 然后 ssh test@localhost -p 3306 但它说连接被拒绝。
  • 是的,您必须提供登录桥接计算机所需的任何凭据。这可能是密码,也可能是 RSA 公钥等。
  • 如果第二个命令打印ssh: connect to host localhost port 3306: Connection refused,那么第一个命令没有成功。
  • 谢谢我成功了。
猜你喜欢
  • 2023-02-15
  • 2020-12-10
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
相关资源
最近更新 更多