通过多跳 ssh 隧道运行 X 客户端

Kut*_*ike 8 xorg ssh-tunneling

我最近将我的家庭开发机器转换为 Linux,并且希望能够在需要时从工作中登录。我混合使用 Linux 和 Windows 机器,并且我已经设置了 ssh/putty/Xorg/Cygwin/etc 的各种旋转来远程启动 X 客户端并在本地 X 服务器上显示。

我的问题是,我的家用机器在防火墙后面,访问它们需要通过 ssh 通过防火墙隧道。当我运行 Windows 时,我在防火墙上设置了 ssh 端口转发,以将 RDC 连接反弹到正确的机器,但 X 隧道似乎更复杂。仅在与防火墙的 ssh 连接上启用 X11 转发似乎只适用于该机器上运行的 X 客户端,而不适用于我在第二个“跃点”上启动的客户端。

有没有办法通过防火墙转发/隧道/任何 X11 连接并到达额外一跳之外的远程机器?

边注:

我并不是特别喜欢 X11,所以如果有一些其他选项可以在多个 ssh 跃点上更好地工作,我会把它作为一个答案(特别是如果你能告诉我为什么它更好)。我碰巧在我所有的工作机器上都已经有一个 Xorg-ish 服务器。要求基本上是:

  • Display-side-thingee(X 服务器、RDC 客户端等)需要在 Linux 和 Windows 上运行
  • 应用程序端的东西只需要在 Linux 上运行
  • 需要在至少 2 个两跳的 ssh“隧道”上工作。

Vin*_*nti 11

假设您有以下拓扑:

工作 -> 防火墙(端口转发) -> 服务器 -> 目标。

如果您的问题是您没有打开 X11,Target因为您正在这样做ssh -X Server,然后在Server您内部这样做,ssh -X Target这可能对您有用。

ssh也允许您转发端口。您可以使用ssh连接获取映射到本地端口的远程端口。例如访问Target一个可以:

映射端口22Target到本地端口20000使用的Server连接(继续保持该连接打开或使用-Nf选项)。

ssh -L20000:Target:22 Server

然后连接到Target使用这个映射的端口。

ssh -p 20000 -X localhost