通过 ssh 隧道使用 RDP 的 VirtualBox

通过 ssh 隧道使用 RDP 的 VirtualBox

我有一个奇怪的要求,我以为它很容易实现,但结果却比我想象的要复杂。

我运行一个防火墙严密的 HPC 科学集群。用户希望 Windows 7 VM 运行特定应用程序。我在 Mac 上创建了 VM,然后将其复制到集群中的 Centos 7 服务器。VirtualBox 可以将其作为无头服务器正常运行,并显示它正在监听端口 3389。

要进入集群,您首先必须通过 ssh 连接到登录节点,然后从那里才能进入集群的其余部分。

所以,我必须创建一个 SSH 隧道,对吧?不过,隧道不是通向登录节点,而是通向进入节点后集群中的另一台服务器。虚拟机不在登录服务器上运行(它本身就是一个虚拟机)。所以我必须进行双重转发?

我尝试在 .ssh/config 文件中使用 localforward,但是不起作用。

现在我想我必须配置登录节点以将端口 3389 上的所有流量转发到运行虚拟机的服务器。

我是否朝着正确的方向前进,还是走错了方向?

答案1

鉴于您可以让登录服务器将流量转发到 VirtualBox 实例,我猜测 VirtualBox 服务器距离登录服务器仅有一跳,并且登录服务器可以通过端口 3389 到达 VirtualBox 实例。

在这种情况下,您不需要进行双重转发。SSH 可以转发 SSH 服务器能够访问的任何远程计算机的端口,因此您只需执行以下操作:

ssh -L 3389:host.which.runs.virtualbox:3389 the.login.node

值得注意的是,host.which.runs.virtualbox:3389上面示例中的部分与您登录的计算机有关。因此,如果登录计算机知道以 身份运行 VirtualBox 的主机vboxrunner.local,您可以在转发中使用该名称,即使您的本地计算机(您运行 ssh 的计算机)对该名称一无所知。

相关内容