У меня есть странное требование, которое, как я думал, будет легко выполнить, но оказалось более сложным, чем я думал.
Я управляю научным кластером высокопроизводительных вычислений с сильными межсетевыми экранами. Пользователь хочет, чтобы виртуальная машина Windows 7 запускала определенное приложение. Я создал виртуальную машину на своем Mac, а затем скопировал ее на сервер Centos 7 в кластере. VirtualBox отлично работает как безголовый сервер и говорит, что прослушивает порт 3389.
Чтобы попасть в кластер, вам сначала нужно подключиться к узлу входа по ssh, а оттуда вы можете получить остальную часть кластера.
Итак, мне нужно создать туннель SSH, верно? За исключением того, что туннель ведет не к узлу входа в систему, а к другому серверу в кластере после того, как вы войдете в узел. Виртуальная машина не запущена на сервере входа в систему (это виртуальная машина сама по себе). Значит, мне нужно делать двойную переадресацию?
Я пробовал использовать localforward в файле .ssh / config, но это не совсем работает.
Теперь я думаю, что мне нужно настроить узел входа в систему для пересылки всего трафика через порт 3389 на сервер, на котором запущена виртуальная машина.
Я двигаюсь в правильном направлении или лаю не на то дерево?
Учитывая, что вы можете заставить сервер входа в систему перенаправлять трафик на экземпляр VirtualBox, я предполагаю, что сервер VirtualBox находится всего в одном прыжке от сервера входа в систему, а сервер входа в систему может подключиться к экземпляру VirtualBox через порт 3389.
В этом случае делать двойную переадресацию не нужно. SSH может перенаправить порт любого удаленного компьютера, к которому может подключиться SSH-сервер, поэтому вам нужно сделать только:
ssh -L 3389:host.which.runs.virtualbox:3389 the.login.node
Стоит отметить, что host.which.runs.virtualbox:3389
часть в приведенном выше примере относится к компьютеру, на который вы входите. Итак, если компьютер для входа в систему знает хост, на котором запущен VirtualBox, как vboxrunner.local
, вы можете использовать это имя в пересылке, даже если ваш локальный компьютер (тот, на котором вы используете ssh) ничего не знает об этом имени.