我有一个奇怪的要求,我认为这很容易做到,但结果比我想象的要复杂。
我运行着一个防火墙严密的 HPC 科学集群。用户希望 Windows 7 VM 运行特定应用程序。我在我的 Mac 上创建了 VM,然后将其复制到集群中的 Centos 7 服务器。VirtualBox 作为无头服务器运行良好,并表示它正在侦听端口 3389。
要进入集群,您首先必须 ssh 到登录节点,然后您可以从那里获取集群的其余部分。
所以,我必须创建一个 SSH 隧道,对吗?除了隧道不是到登录节点外,它是在您进入节点后到集群中的另一台服务器。VM 未在登录服务器上运行(即本身就是一个 VM)。所以我必须做双重转发?
我尝试在 .ssh/config 文件中使用 localforward,但效果不佳。
现在我在想我必须配置登录节点以将端口 3389 上的所有流量转发到运行 vm 的服务器。
我是在朝着正确的方向前进还是在找错树?
鉴于您可以让登录服务器将流量转发到 VirtualBox 实例,我猜 VirtualBox 服务器距离登录服务器只有一跳,并且登录服务器可以通过端口 3389 到达 VirtualBox 实例。
在这种情况下,您不需要进行双重转发。SSH 可以转发 SSH 服务器能够访问的任何远程计算机的端口,因此您只需执行以下操作:
可能值得注意的是,
host.which.runs.virtualbox:3389
上面示例中的部分是相对于您登录的计算机而言的。因此,如果登录计算机知道运行 VirtualBox 的主机vboxrunner.local
,您可以在转发中使用该名称,即使您的本地计算机(运行 ssh 的计算机)对该名称一无所知。