Как SSH к гостю VirtualBox извне через хост?

У меня есть Ubuntu VM, работающая на моей машине Windows 7. Как настроить его так, чтобы я мог получить доступ к веб-серверу извне через SSH?

Я нашел шаги (настройка SSH-доступа между хостом VirtualBox и гостевой VMs), чтобы иметь возможность ssh для моего гостя с моего хоста, но это все еще оставляет меня с проблемой доступа к нему через мой маршрутизатор.

Я полагаю, что я мог бы установить SSH-сервер на моей машине Windows, а затем туннелировать несколько раз (хотя я не на 100% уверен, что использовать с точки зрения локального, динамического и т. д. или как настроить несколько туннелей?), но есть ли способ сделать VM непосредственно доступным для моего маршрутизатора, чтобы я мог напрямую переносить на него?

14 ответов


лучший способ войти в гостевую виртуальную машину Linux VirtualBox -переадресация портов. По умолчанию у вас должен быть один интерфейс, который использует нац. Тогда идите в сеть настройки и нажмите Переадресация Портов. Добавить новое правила. В качестве имени правила вставьте "ssh". В качестве "порта Хоста" вставить 3022. В качестве "гостевого порта" включить 22. Все остальное в правиле можно оставить пустым.

или от командная строка

VBoxManage modifyvm myserver --natpf1 "ssh,tcp,,3022,,22"

где "myserver" - это имя созданной виртуальной машины. Проверьте добавленные правила:

VBoxManage showvminfo myserver | grep 'Rule'

вот и все! Пожалуйста, убедитесь, что вы не забыли установить SSH сервер в виртуальной машине:

sudo apt-get install openssh-server

для SSH в гостевой ВМ напишите:

ssh -p 3022 user@127.0.0.1

здесь user - это ваше имя пользователя в виртуальной машине.


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


сохранение адаптера NAT и добавление второго адаптера только для хоста работает потрясающе и имеет решающее значение для ноутбуков (где внешняя сеть всегда меняется).

http://muffinresearch.co.uk/archives/2010/02/08/howto-ssh-into-virtualbox-3-linux-guests/

Не забудьте создать сеть только для хоста в самом virtualbox (GUI- > Настройки - > Сеть), иначе вы не можете создать интерфейс только для хоста на госте.


как сделать сеть только для хоста (лучше чем мост) для Solaris 10 и Ubuntu 16.04

добавить интерфейс только для хоста

  1. Virtualbox > Файл > Настройки > Сеть > сети только для хоста > добавить
  2. завершение работы vm.
  3. настройки виртуальной машины > сеть. Первый адаптер должен быть Nat, второй-только для хоста.
  4. запустить cmd.exe и запустите ipconfig /all. Вы должны увидеть строки:

    Ethernet adapter VirtualBox Host-Only Network:
       ...
       IPv4 Address. . . . . . . . . . . : 192.168.59.1
    

    второй адаптер в гостях также должно быть в 192.168.59.*.

  5. запустить VM.

Солярис 10

  1. Регистрация настройки ifconfig -a. Вы должны увидеть e1000g0 и e1000g1. Мы заинтересованы в e1000g1.
  2. ifconfig e1000g down
  3. ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up
  4. проверьте у хоста, доступен ли этот интерфейс:ping 192.168.56.10

сохранить эти настройки по перезагрузка

# vi /etc/hostname.e1000g1
192.168.56.10 netmask 255.255.255.0
# reboot

настройка ssh сервис (администрирование) для входа в систему как root (не рекомендуется)

проверьте, включен ли ssh

# svcs -a | grep ssh
online         15:29:57 svc:/network/ssh:default

изменить /etc/ssh / sshd_config так что есть

PermitRootLogin yes

перезапустить службу ssh

svcadm restart ssh

от ведущего его

ssh root@192.168.56.10

Ubuntu 16.04

интерфейсы:

ip addr

вы должны увидеть три интерфейса, таких как lo, enp0s3, enp0s8. Мы воспользуемся третьим.

редактировать/etc / сеть / интерфейсы

auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

затем sudo ifup enp0s8. Проверьте, получил ли enp0s8 правильный адрес. Вы должны увидеть ваш IP:

 $ ip addr show enp0s8
 ...
    inet 192.168.56.10/24 brd 192.168.56.255 scope global secondary enp0s8

если нет, вы можете запустить sudo ifdown enp0s8 && sudo ifup enp0s8

https://superuser.com/questions/424083/virtualbox-host-ssh-to-guest/424115#424115


вы также можете использовать Сетевой Мост (или" адаптер моста", в более новых версиях) в настройки сети. Это поместит вашу виртуальную машину во VLAN с вашей машиной. Таким образом, вы можете просто ssh в VM, как это.

пользователь ssh@IP_OF_VM


SSH обратно в ваш дом / офис VirtualBox гостевой машины из интернета

ответы, предоставленные другими пользователями здесь:How to SSH to a VirtualBox guest externally through a host?

... помог мне выполнить задачу подключения из интернета к гостевой машине моего домашнего компьютера. Вы должны иметь возможность подключаться с помощью компьютеров, планшетов и смартфонов (android, IPhone и т. д.). Я добавляю еще несколько шагов, если это может быть полезно кому-то еще:

вот краткая диаграмма моя настройка:

  • Remote device ---> INTERNET --> MODEM --> ROUTER --> HOST MACHINE --> GUEST VM

  • Remote device (ssh client) ---> PASS THRU DEVICES ---> GUEST VM (ssh server)

  • Remote device (leave ssh port 3022) ---> INTERNET --> MODEM --> ROUTER (FWD frm:p3022 to:p3022)--> HOST MACHINE (FWD frm:p3022 to:p22) --> GUEST VM (arrive ssh port 22)

ключом для меня было осознать, что все связи были PASSING-THROUGH промежуточные устройства, чтобы получить с моего удаленного ПК на мою гостевую виртуальную машину дома-следовательно, переадресация портов!

заметки: * Нужен SSH клиент с просьбой безопасное соединение и сервер SSH для безопасного процесса соединение.

  • я перешлю порт 3022, как используется в выбранном ответе сверху.

  • введите свой ИПС, где это необходимо (домашний модем/роутер, IP адрес, Ваш IP и т. д.), Выбранные имена являются лишь примерами-использование или изменение.

1.Создайте ssh-туннель для порта 3022 на внешнем IP-адресе вашего модема / маршрутизатора.

ssh client/device possible commands: ssh -p 3022 user-name@home_external_IP

2.Port forward = мы проходим через соединение от маршрутизатора к хост-машине

  • также убедитесь, что правила брандмауэра / IPtable на маршрутизаторе позволяют переносить порты (при необходимости открывать)

  • экран Pfwd маршрутизатора необходимые записи: AppName:SSH_Fwd, Port_from: 3022, протокол: оба (UDP / TCP), IP_address:hostIP_address, Port_to:3022, все остальное может быть пустым

ресурсы программного обеспечения маршрутизатора DD-WRT / Info:

3.Брандмауэр хост-машины: откройте порт 3022 #, чтобы перенаправленный порт мог пройти через гостевую машину

  • хост-машина: установите VirtualBox, гостевые дополнения и гостевую машину, если это еще не сделано

  • настройте гостевую машину, а затем следуйте инструкциям Раздел сети ниже

  • я использовал VirtualBox GUI для настройки сети гостя-проще, чем CLI

  • если вы хотите использовать другие методы относятся к : VirtualBox/manual/ch06.html#natforward

4.Некоторые предлагают использовать адаптер сетевого моста для guest = access to LAN и других компьютеров в вашей локальной сети. Это также создает повышенную угрозу безопасности, потому что теперь ваша гостевая машина теперь подвергается воздействию компьютеров LAN и, возможно, интернет-хакеров, если брандмауэр не настроен должным образом. Поэтому я выбрал сетевой адаптер, подключенный к NAT, для меньшего риска для безопасности.

на гостевой машине сделайте следующее:

  • настройки сети VirtualBox гостевой машины: адаптер 1: подключен к NAT
  • правило пересылки портов VirtualBox гостевой машины: имя: External_SSH, протокол: TCP, порт Хоста: 3022, гостевой порт 22, хост и гостевой IPs: оставьте пустым
  • нажмите на advance в разделе сети, затем нажмите на переадресацию портов ввести правила
  • Брандмауэр гостевой машины: откройте порт 22 #, чтобы ssh-соединение могло войти
  • гостевая машина: убедитесь, что ssh-сервер установлен, настроен правильно и работает
  • LINUX test, чтобы увидеть, работает ли ssh-сервер с командой: sudo service ssh status
  • можно проверить netstat, чтобы увидеть, если соединение сделано с портом 22 на гостевой машине

также существуют различные SSH-серверы и клиенты в зависимости на платформе, используя.

  • wikipedia/Secure_Shell
  • wikipedia/Comparison_of_SSH_servers
  • wikipedia/Comparison_of_SSH_clients

Для Пользователей Ubuntu:

  • ubuntu community: SSHOpenSSH/Configuring
  • ubuntu/community: OpenSSH/Keys

это должно быть так. Если я сделал ошибку или хочу что-то добавить-не стесняйтесь делать это-я все еще нуб.

надеюсь, это кому-то поможет. Удачи!


для хоста Windows, вы можете :

  1. в VirtualBox manager:
    1. выберите ctrl+G в вашем VirtualBox manager,
    2. затем перейдите в network pannel
    3. добавить частную сеть
      1. убедитесь, что активация DHCP Не выбрана
  2. в сетевом управлении (windows)
    1. выберите недавно созданный адаптер VirtualBox host only и физическая сетевая карта
    2. щелкните правой кнопкой мыши и выберите "сделать мост"
  3. наслаждайтесь

вы также можете инициировать порт вперед к вашему хосту или любому другому серверу от вашего гостя. Это особенно полезно, если ваш гость "заблокирован" или не может иначе завершить опцию ModifyVM (например, нет разрешения на VBoxManage).

три второстепенных требования: 1) Вы / можете войти в VirtualBox Guest (через "консольный" GUI, другой гость и т. д.), 2) у вас есть учетная запись на хосте VirtualBox (или другом сервере), и 3) пересылка SSH и TCP не блокируется.

предполагая, что вы можете удовлетворить 3 требования, это шаги:

  1. на гостя, беги netstat -rn и найдите адрес шлюза к назначению маршрута по умолчанию 0.0.0.0. Допустим это "10.0.2.2". Этот адрес шлюза является(одним из) виртуальных IP-адресов Хоста VirtualBox.
  2. на гостя, беги ssh -R 2222:localhost:22 10.0.2.2 где "10.0.2.2" - IP-адрес сервера VirtualBox или любой другой IP-адрес сервера, на который вы хотите перенести.
  3. на хосте запустите ssh 10.0.2.2 -p2222 где 10.0.2.2-виртуальный IP-адрес шлюза/VBHost по умолчанию, найденный на шаге 1. Если это не хост VirtualBox, на который вы перенаправляете порт, то команда ssh localhost -p2222

выполните следующие действия, чтобы войти в свою виртуальную машину ubuntu, работающую в виртуальном поле с хост-машины, используя шпатлевку (без переадресации портов):

  1. в Virtualbox manager выберите виртуальную машину, нажмите на значок настроек. Затем перейдите в сети и включите два адаптера, как показано ниже:

    • адаптер 1 (для доступа в интернет): подключен к -> Nat, дополнительно -> Проверьте подключенный кабель.
    • адаптер 2: подключен к - > хост только адаптер, расширенный -> Проверьте подключенный кабель и беспорядочный режим - > разрешить все.
  2. запустите виртуальную машину ubuntu.

  3. войдите в VM как root.
  4. отредактируйте файл "/ etc / network / interfaces", как показано ниже, и сохраните его:

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet dhcp
    
  5. перезапустите виртуальную машину.

  6. войдите в VM и выполните команду ниже, чтобы проверить IP, выделенный eth1:

    ifconfig
    
  7. используйте этот IP для открытия сеанс шпатлевки для виртуальной машины.


для ssh к виртуальной машине Ubuntu, работающей в VirtualBox с вашего хост-компьютера, вам нужно настроить два сетевых адаптера для виртуальной машины.

прежде всего, остановите VM, если еще нет.

затем выберите виртуальную машину и нажмите меню настроек на панели инструментов VirtualBox:

enter image description here

настройка адаптера 1

enter image description here

настройки адаптера 2

enter image description here

(Примечание: вам не нужно настраивать проброс портов.)

вот именно. После настройки вы можете запустить свою виртуальную машину. В вашей виртуальной машине конфигурация сети будет выглядеть следующим образом, и у вас также будет доступ в интернет:

enter image description here

также на вашем хост-компьютере вы можете использовать ssh для своей виртуальной машины:

enter image description here

убедитесь, что сервер SSH был установлен и работает в виртуальной машине.

$ ps aux | grep sshd
root 864 0.1 0.5 65512 5392 ? Ss 22:10 0:00 /usr/sbin/sshd -D

Если нет, то установите его:

$ sudo apt-get install openssh-server

также для вашего сведения:

  • моя версия VirtualBox: 5.2.6 r120293 (Qt5.6.2), 2018
  • моя версия Ubuntu: Ubuntu 16.04.3 LTS
  • моя главная машина: Windows 10

хорошее объяснение о том, как настроить переадресацию портов с помощью NAT, находится в документах VirtualBox: http://www.virtualbox.org/manual/ch06.html#natforward


просто установка сетевого параметра в bridged сделала трюк для меня.

ваш IP-адрес изменится, когда вы это сделаете. Однако в моем случае все изменилось не сразу. ifconfig вернул тот же ip. Я перезагрузил vm и boom, ip установил себя на один старт с 192.* и мне сразу же разрешили доступ к ssh.


в сети настройки сети на мост может не работать. Администраторы могут разрешить только один mac-адрес на порт или, что еще хуже, заблокировать порт, если коммутаторы обнаружат несколько Mac на одном порту.

лучшим решением, на мой взгляд, является настройка дополнительных сетевых интерфейсов для обработки дополнительных сервисов, которые вы хотите запустить на своих машинах. Поэтому у меня есть интерфейс моста, чтобы разрешить мост, когда я беру свой ноутбук домой и могу SSH в него с других устройств моя сеть, а также хост-адаптер, когда я хотел бы SSH в мою виртуальную машину с моего ноутбука, когда я подключен к сети eduroam wifi в кампусе.


используйте сетевой адаптер NAT и добавьте порт вперед. Упомяните фактический ip-адрес хоста.Не используйте 127.0.0.1 или localhost.