通过中间主机安全地建立隧道端口

通过中间主机安全地建立隧道端口

我正在寻找将 VNC 端口路由回我家的方法。我必须跳过单个主机,然后跳到我的实际工作机器。

  • sittinghere将是我本地的家用机器
  • hopper将通过我需要进行的中间跳跃
  • overthere将是远程工作机器

我可以通过 SSH 连接到我的工作机器:

ssh -t hopper "ssh -t overthere"

我想使用端口转发将远程端口 5900 转发overthere到 上的本地端口 5900 sittinghere。但是,我希望能够在不绑定到公开端口的情况下完成此操作,hopper因为该计算机上的任何人都可以连接到我的 VNC 连接。

有什么方法可以让我将该端口安全地转发到我的本地计算机,而没有人能够访问它hopper吗?

答案1

使用 SSH 的本机功能来转发端口。从sittinghere执行:

 ssh -v -N -L 5900:overthere:5900 user@hopper

将您的 VNC 客户端指向localhost:5900,流量将overthere:5900通过建立在hopper

答案2

我最终使用了一些 SSH ~/.ssh/confighack 来实现这一点:

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

它的作用是,当我尝试连接到ssh overtherefrom 时sittinghere,它会连接到hopper并代理 SSH 连接到端口 22 overthere(即: SSH on overthere)。

这有一些很棒的副作用:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

一切都工作得很好,据我所知,5900 没有在 上打开hopper,只是直接从 转发overtheresittinghere

答案3

您可以通过将端口从sittinghereSSHoverthere端口转发到hopper。然后您可以使用该端口overthere直接从到达sittinghere。在第二个 SSH 会话中,您可以转发 VNC 或您喜欢的任何其他端口,同时hopper只能看到加密的 SSH 会话。

第一个 SSH 会话:

ssh -f -N -L 7022:overthere:22 hopper

overthere现在通过将此配置添加到~/.ssh/configon来告诉 SSH 客户端如何到达sittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

第二次 SSH 会话:

ssh -f -N -L 5900:localhost:5900 overthere

或者只是一个没有 VNC 端口隧道的常规交互式 SSH 会话:

ssh overthere

如果您不想费心添加行,~/.ssh/config您仍然可以告诉它如何从命令行连接overthere

ssh -p 7022 hopper

...但是如果没有HostKeyAliasSSH 将无法overthere正确验证密钥指纹。

所有命令行都将从 运行sittinghere

顺便说一句,我认为您可能不需要使用sshs-t选项。

答案4

vncviewer如果您从命令行使用 VNC 客户端,则可以使用-via开关告诉它user@host在连接到其他主机的 VNC 服务器之前先通过隧道。

例子

$ vncviewer -via user@host localhost:0

您还可以vinagre通过 GUI 来通过 SSH 隧道进行连接。为此,请通过以下连接对话框设置与此类似的连接vinagre

              SS #1

这将导致您的连接通过 SSH 隧道主机建立隧道。

    SS #2

参考

相关内容