Как SSH для гостевой системы VirtualBox извне через хост?

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

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

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

Ответ 1

Лучший способ войти в гостевую Linux VirtualBox VM - это перенаправление портов. По умолчанию у вас должен быть один интерфейс, который использует NAT. Затем перейдите к настройкам сети и нажмите кнопку "Переадресация порта". Добавьте новое правило:

Хост-порт 3022, гостевой порт 22, имя ssh, другой пустой пробел.

или из командной строки

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 [email protected]

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

  • Virtualbox > Файл > Настройки > Сеть > Сети только для хостингa > Добавить
  • Завершение работы vm.
  • Настройки виртуальной машины > Сеть. Первый адаптер должен быть Nat, второй Host-only.
  • Запустите cmd.exe и запустите ipconfig /all. Вы должны увидеть строки:

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

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

  • Запустите виртуальную машину.

Solaris 10

  • Отметьте настройки ifconfig -a. Вы должны увидеть e1000g0 и e1000g1. Нас интересует e1000g1.
  • ifconfig e1000g down
  • ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up
  • Проверить хост, если этот интерфейс доступен: 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 [email protected]

Ubuntu 16.04

Список интерфейсов:

ip addr

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

Изменить/etc/network/interfaces

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

Ответ 5

Вы также можете использовать сетевую настройку Бридж-Сеть в . Это поместит вашу виртуальную машину в VLAN с вашей машиной. Таким образом, вы можете просто ssh в VM как это.

ssh user @IP_OF_VM

Ответ 6

SSH Вернуться к домашнему /Office 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-адрес хоста, гостевой IP-адрес и т.д.). Выбранные имена - это просто примеры - использование или изменение.

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

ssh client/device possible commands: ssh -p 3022 [email protected]_external_IP

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

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

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

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

3. Файловый брандмауэр Hhost: открытый порт 3022 #so переадресованный порт может проходить через гостевую машину

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

  • Настройте гостевую машину, а затем следуйте ниже в разделе "Сеть" ниже

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

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

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

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

  • Пользовательская машина VirtualBox Параметры сети: Адаптер 1: присоединен к NAT
  • Правило маршрутизации виртуальной машины FastBox для гостевой машины: имя: External_SSH, протокол: TCP, порт хоста: 3022, гостевой порт 22, гостевые IP-адреса: оставить пустым
  • перейдите в раздел "Сеть", затем нажмите "Переадресация портов", чтобы ввести правила.
  • Брандмауэр гостевой машины: открытый порт 22 #so ssh соединение может войти
  • Гость: убедитесь, что ssh-сервер установлен, настроен правильно и работает
  • Тест LINUX для проверки работы сервера 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

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

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

Ответ 7

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

  • В виртуальном менеджере:
    • выберите ctrl + G в вашем диспетчере виртуальных камер,
    • затем перейдите к сетевой панели
    • добавить частную сеть
      • убедитесь, что активирован DHCP не выбран
  • В управлении сетью (windows)
    • Выберите только что созданный виртуальный хост-адаптер и физическую сетевую карту
    • Щелкните правой кнопкой мыши и выберите "Сделать мост"
  • Наслаждайтесь

Ответ 8

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

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

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

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

Ответ 10

Просто настройка сетевой настройки для моста сделала трюк для меня.

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

Ответ 11

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

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

Ответ 12

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

Ответ 13

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

  • В Диспетчере виртуальных боксов выберите vm, щелкните значок настроек. Затем перейдите в сеть и включите два адаптера, как показано ниже:

    • Адаптер 1 (для доступа в Интернет): Прикреплено к → NAT, Дополнительно → Проверьте подключенный кабель.
    • Адаптер 2: присоединен к → только адаптер хоста, расширенный → Проверьте подключенный кабель и режим Promiscuous → Разрешить все.
  • Запустите ubuntu vm.

  • Войдите в виртуальную машину с правами root.
  • Отредактируйте файл '/etc/network/interfaces', как показано ниже, и сохраните его:

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    
    auto eth1
    iface eth1 inet dhcp
    
  • Перезагрузите виртуальную машину.

  • Войдите в виртуальную машину и запустите команду ниже, чтобы проверить IP-адрес, присвоенный eth1:

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