Удаленный доступ по SSH к виртуальной машине Ubuntu

Удаленный доступ по SSH к виртуальной машине Ubuntu

У меня нет большого опыта в работе с сетями или Linux, но я пытаюсь подключиться по ssh к виртуальной машине Ubuntu из-за пределов моей домашней сети. Виртуальная машина Ubuntu (VirtualBox) работает на рабочем столе Debian. Я провел небольшое исследование и обнаружил, что мне нужно перенаправить порт 22 с маршрутизатора на виртуальную машину.

  • Я изменил сетевые настройки на виртуальной машине на мост.
  • Я перенаправляю порт на виртуальную машину.
  • Я проверил (http://www.yougetsignal.com/) чтобы показать, что порт открыт.

Но когда я пытаюсь подключиться, все равно не получается. ssh username@ -- соединение отклонено

Нужно ли что-то сделать внутри виртуальной машины, чтобы разрешить входящие соединения? Или перенаправить какой-либо порт?

Если я что-то делаю не так, буду очень признателен за любую помощь!!

решение1

По умолчанию VirtualBox работает в режиме «NAT», то есть он создает «виртуальную» сеть и транслирует сетевые доступы с виртуальной машины таким образом, что для внешнего мира они выглядят так, как будто исходят с вашего реального компьютера.

VirtualBox заставляет виртуальную машину думать, что она подключена к сети, но на самом деле VirtualBox предоставляет сетевые службы, включая мини-сервер DHCP. Затем VirtualBox осуществляет сетевой доступ «от имени» виртуальной машины, делая ее похожей на еще одно приложение, работающее на вашем ПК.

Однако это означает, что внешний мир на самом деле не знает о виртуальной машине и не может получить к ней прямой доступ.

Я думаю, что перенаправление портов, которое вы сделали, было с вашего домашнего маршрутизатора на ваш ПК, а не на виртуальную машину. Возможно, вы пропустили некоторые настройки на стороне VirtualBox. Извините, если вы уже это сделали, но ваш вопрос был не совсем ясен.

По сути, вам нужно изменить сетевую конфигурацию виртуальной машины и установить ее на «Мост». Это создает виртуальный интерфейс на вашем ПК и заставляет виртуальную машину использовать его для доступа к внешнему миру; все, что входит или выходит на этот интерфейс, передается в виртуальную машину. Таким образом, виртуальная машина будет видна как просто еще одна машина в любой сети, к которой подключен ваш ПК (у нее даже есть собственный MAC-адрес!).

Затем, в зависимости от конфигурации вашей сети, виртуальная машина может получить адрес DHCP, как и любой другой ПК, подключенный к вашему маршрутизатору, или вам может потребоваться настроить для нее статический IP-адрес. Это зависит от того, как настроена ваша сеть.

Как только у виртуальной машины появится «реальный» адрес, вы можете на своем маршрутизаторе следовать инструкциям, которые вы нашли, чтобы направить порт 22 на IP-адрес виртуальной машины. Это должно работать так, как вы ожидаете.

Если этого не произойдет:

  • Посмотрите конфигурацию брандмауэра вашей виртуальной машины (iptables -L -n). Блокирует ли он что-нибудь?
  • Настройте другой компьютер в локальной сети и попробуйте подключиться по SSH к IP-адресу виртуальной машины. Если это возможно, вам нужно дважды проверить конфигурацию переадресации на маршрутизаторе. Если это невозможно, вам нужно перепроверить конфигурацию SSH и брандмауэра виртуальной машины.

решение2

Насколько я могу судить, проблема кроется в сети вашего сервера, поскольку после настройки сети виртуальной машины в режиме моста все готово (проверьте ssh <your.vm.ip.number>в командной строке сервера, а не в виртуальной машине).

Ваш сервер находится за маршрутизатором, как и виртуальная машина, использующая NAT на вашем компьютере.

Вам необходимо обратиться к администратору сети вашего сервера, чтобы он/она мог перенаправить локальный IP-адрес вашей виртуальной машины на порт/диапазон портов (убедитесь, что у вашей виртуальной машины статический IP-адрес).

Вы можете сделать это самостоятельно, если у вас есть соответствующие полномочия на шлюзе вашего сервера.

немного визуализации:

Internet
     '---ROUTER (SERVER1 and SERVER2 use NAT on this router)
            |   (vm1, vm2, vm3, vm4, vm5 need to be forwarded on this router)
            | 
            '--- SERVER1 (vm1, vm2, vm3 use Bridge)
            |       '---vm1
            |       '---vm2
            |       '---vm3
            '--- SERVER1 (vm4, vm5 use Bridge)
            |       '---vm4
            |       '---vm5

решение3

Рассматривая вашу ситуацию, похоже, вам нужно настроить брандмауэр для вашей виртуальной машины с помощью $ sudo ufw allow ssh

решение4

Это можно сделать и в «режиме NAT». У Oracle VM Virtualbox есть функция переадресации портов,

Перейдите в настройки Virtualbox > Сеть > Адаптер (NAT) > Дополнительно > Переадресация портов.

Дополнительно > Переадресация портов

Связанный контент