Как подключиться к виртуальной машине VirtualBox по SSH
После установки серверного дистрибутива Linux на виртуальную машину VirtualBox вы можете обнаружить, что подключение по SSH не работает. Это связано с тем, что по умолчанию на VirtualBox используется подключение к интернету с помощью NAT.
При таком способе подключения у вас нет возможности подключаться к виртуальной машине из своей реальной операционной системы. В частности, вы не сможете подключиться по SSH.
В данной статье мы рассмотрим сразу два способа, как можно решить эту проблему. Первый вариант – проброс портов через NAT, а второй – использование сетевого моста. Оба этих способа сохраняют доступ к интернету на виртуальной машине.
Проброс портов для SSH
Для проброса портов вам нужно знать IP адрес, который присваивается виртуальной машине. Для этого запустите виртуальную машину и выполните на ней команду « ip addr » или « ifconfig ». В ответ вы получите информацию о сетевых подключениях, в которой будет указан и IP адрес. В нашем случае был получен IP адрес – « 10.0.2.15 ».
Обратите внимание, если в вашей системе нет команды « ifconfig », то ее нужно будет установить отдельно. В случае Debian и Ubuntu Linux это можно сделать с помощью команды « apt-get install net-tools ».
После того как мы узнали IP адрес виртуальную машину нужно выключить и открыть ее настройки в программе VirtualBox.
В настройках виртуальной машины нужно открыть раздел « Сеть », открыть дополнительные настройки и перейти к пробросу портов.
После этого откроется окно для проброса портов. Здесь нужно нажать на кнопку « Добавить » и заполнить следующие данные:
- Имя : SSH.
- Протокол : TCP.
- Адрес хоста : оставляем пустым или указываем 127.0.0.1.
- Порт хоста : любой свободный порт на вашей основной системе, например, 2222.
- Адрес гостя : IP адрес, который был присвоен вашей виртуальной машине. В нашем случае это 10.0.2.15.
- Порт гостя : порт SSH на виртуальной машине, по умолчанию – 22.
После проброса порта закрываем все окна с помощью кнопки « ОК ».
После этого можно подключаться к виртуальной машине по SSH. Для этого можно использовать клиент OpenSSH, который доступен в Windows 10. Поскольку порт « 2222 » на основной системе был проброшен на порт « 22 » на виртуальной машине, то для подключения по SSH нам нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 2222 » — используемый порт на основной системе.
Аналогичным способом выполняется подключение с помощью PuTTY . В поле « Host Name » указываем « localhost », а в поле « Port » — « 2222 ». Более подробно об OpenSSH и PyTTY в отдельной статье о подключении по SSH.
Как видно по скриншоту вверху, данный способ отлично работает, и мы успешно подключились по SSH к виртуальной машине VirtualBox.
Подключение через сетевой мост
Также есть альтернативный способ подключения к виртуальной машине по SSH для этого нужно изменить тип подключения с « NAT » на « Сетевой мост ». В этом случае виртуальная машина будет подключена к вашей локальной сети и получит IP адрес от вашего роутера из того же диапазона, что и ваша основная система.
Для этого нужно выключить виртуальную машину и зайти в ее свойства в программе VirtualBox. В настройках нужно зайти в раздел « Сеть » и включить тип подключения « Сетевой мост ».
После этого нужно запустить виртуальную машину и выполнить на ней команду « ip addr » или « ifconfig » для того, чтобы узнать, какой IP адрес она получила от роутера. В нашем случае был получен IP адрес « 192.168.1.214 ».
После этого к виртуальной машине можно подключаться по SSH. Для этого нужно просто использовать IP адрес, который был ей присвоен роутером. Например, для того чтобы подключиться с помощью клиента OpenSSH нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 192.168.1.214 » — это ее IP адрес.
Аналогично работает и подключение с помощью PuTTY. Вводим « 192.168.1.214 » и подключаемся по стандартному порту « 22 ».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.
Установка Ubuntu Server
на виртуальную машину Virtualbox
и настройка SSH сервера.
Практически любому веб-разработчику, рано или поздно, приходится сталкиваться с веб серверами. Даже если Вы работаете в достаточно крупной компании и за работу с сервером отвечает специально обученный человек, знать как устроен сервер все равно не будет лишним.
Сегодня мы установим сервер Ubuntu на виртуальную машину и у Вас появиться возможность с ним поэкспериментировать. Установить, например, Node.js или базу данных. Установить NGINX, Apache, изменить настройки и т.д.
Для этого совершенно не обязательно тратить деньги и покупать место у хостера.
1. Подготовка к установке.
Ссылки на скачивание:
Для начала скачаем и установим виртуальную машину VirtualBox, сам сервер Ubuntu и программы для связи с нашим сервером. Если у Вас система Windows и установлен PowerShell, то достаточно скачать и установить WinSCP, если PowerShell не установлен, то нужно будет скачать PuTTY. Для систем Linux дополнительных программ не требуется. К сожалению для MacOS подсказать не смогу.
Здесь будет рассмотрена установка и настройка Ubuntu Server 18.04 на Windows. Однако установка и настройка на другие системы отличается только способом подключения к SSH серверу.
Какой сервер Ubuntu выбрать, решать Вам. !8.04 устанавливают абсолютно все хостеры, 20.04 – не факт. Но на Ubuntu Server 20.04 без танцев с бубнами по умолчанию ставится Python 3.8. И устанавливается MySQL 8. Хотя для тренировки подойдет любая.
2. Установка Ubuntu Server
Запускаем VirtualBox, заходим в «Файл» -> «Менеджер сетей хоста» и проверяем, чтобы настройки совпадали с теми, что на скриншоте ниже. По умолчанию они должны быть именно такими. Если нет — настраиваем.
Нажимаем кнопку «Создать», называем ubuntu, выбираем разрядность как у Вашей системы и соглашаемся со всем, что предложено по умолчанию.
Теперь нужно указать место хранения виртуальной машины. Я предпочитаю хранить подобные вещи не на системном диске. Жмем на иконку папки и выбираем желаемый диск и директорию. Имя оставляем по умолчанию ubuntu.
Ниже предлагается указать максимальный размер виртуального диска. Дело в том, что динамический виртуальный диск подразумевает не бесконечное расширение, а то, что занимать он будет столько, сколько в нем записано. Но не больше, чем мы укажем при его создании. Поэтому зададим нашему диску гигов 20. Для обучения, думаю, хватит. Можете задать больше.
Нажимаем «Создать». Далее жмем кнопку «Настроить» и выбираем вкладку Сеть. Первый адаптер оставляем без изменений. Заходим во вкладку «Адаптер 2», включаем его и выбираем «Виртуальный адаптер хоста». Жмем «ОК».
Теперь нажимаем кнопку «Запустить». Появмться окно выбора установочного диска. Жмем на кнопку с папкой, далее «Добавить» и выбираем скачанный образ Ubuntu Server. Жмем «продолжить».
Начнется установка сервера. Выбираем Английский язык, выбираем обновление во время установки и затем везде кликаем [Done].
Для перехода между пунктами используем клавишу Tab. Для выбора «Continue» используем стрелку вниз.
Указываем свое имя, имя сервера, имя пользователя, под которым будете заходить и пароль пользователя. Подтверждаем пароль пользователя. Далее обязательно отмечаем установку OpenSSH Server. Для этого нажимаем клавишу Пробел. В поле установки дополнений ничего не выбираем и не нажимаем «Cancel update and reboot». Установка обновлений может занять достаточно много времени. Ждем.
Дожидаемся надписи «Reboot» и жмем Enter. Затем установщик просит изьять установочный диск. Заходим в «Устройства» -> «Оптические диски» и кликаем по ubuntu 18.04 (или 20.04 в зависимоти от того, какую редакцию устанавливаете). Снова заходим в «Устройства» -> «Оптические диски» и нажимаем «Изъять диск из привода». Жмем Enter, дожидаемся перезагрузки сервера и когда потребует — вводим логин и пароль. Пароль при вводе не отображается!
На этом установка Ubuntu Server закончена. Дальше будем настраивать.
3. Настраиваем подключение по SSH
Для начала создадим пароль для пользователя «ROOT». Это пользователь Ubuntu, который имеет расширенные права (аналогично пользователю «Администратор» в Windows). Для этого вводим:
Необходимо будет ввести свой пароль, затем ввести новый пароль для рута и подтвердить новый пароль.
Теперь разрешим руту входить по SSH. Для этого отредактируем файл sshd_config. Вводим:
sudo nano /etc/ssh/sshd_config
Возможно потребуется ввести свой пароль (не рута!). Находим строчку #PermitRootLogin prohibit-password, раскомментируем ее и заменяем prohibit-password на yes
Нажимаем CTRL-X -> Y -> Enter. Перезапускаем SSH сервер:
Теперь временно настроим сетевое подключение для SSH. Временно потому, что после перезагрузки такая настройка уже работать не будет и придется вводить комманду заново. Набираем:
sudo ifconfig enp0s8 192.168.56.101
Проверяем. Набираем ifconfig и видим подлючение enp0s8
Теперь открываем PowerShell и подключаемся к нашему серверу (если PowerShell то устанавливаем PuTTY и используем его):
В перый раз при входе на незнакомый адрес, PowerShell спросит разрешения. Пишем Yes. Вводим пароль рута и заходим на сервер.
Дальше настроим подключение с помощью WinSCP. Открываем программу, выбираем «Новое подключение», протокол передачи SFTP, Имя хоста вводим 192.168.56.101, порт оставляем 22, имя пользователя — root, пароль — наш пароль рута. Нажимаем «Сохранить», ставим галку «запомнить пароль» вводим имя подключения или оставляем как есть и жмем «ОК». Дальше нажимаем «Войти» и как и в PowerShell при первом запуске спросит разрешение для подключения к неизвестному серверу. Разрешаем.
Теперь настроим для WinSCP внешний редактор кода. Для этого заходим «Параметры» -> «Настройки» -> «Редакторы» и нажимаем «Добавить». Выбираем «Внешний редактор -> «Обзор» и находим свой редактор кода. Я для этих целей использую VS Code (C:\Program Files\Microsoft VS Code\code.exe). Вы можете использовать любой, к какому привыкли. Например Notepad++ или Sublime Text. Не советую для этих целей использовать IDE. Слишком долго грузиться будет. Выбираем, нажимаем «ОК», смотрим, чтобы редактор появился в списке, перемещаем его вверх одноименной кнопкой и снова «ОК».
Теперь увеличим время жизни сессии SSH. Если определенное время, при подключении по SSH, не производить никаких действий, то подключение прерывается. И потом приходится подключаться заново. Порой это раздражает. Поэтому время жизни сессии я рекомендую увеличить.
При входе на сервер мы попадаем в директорию «root». Выходим из нее (кликаем по папке с двумя точками), заходим в папку «etc» -> «ssh» и открываем файл sshd_config.
Пролистываем файл вниз и добавляем следующие строчки:
TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 60
Сохраняем файл и закрываем редактор. Возвращаемся в PowerShell и перезапускаем SSH сервер:
Если мы вошли как root пользователь то слово sudo можно не писать.
Следующим шагом мы настроим постоянное подключение enp0s8. Для этого возвращаемся в WinSCP, выходим из папки ssh и заходим в netplan (/etc/netplan). Открываем файл 00-installer-config.yaml и прописываем следующие строчки:
enp0s8:
dhcp4: no
addresses: [192.168.56.101/24]
В результате файл должен выглядеть так:
Сохраняем файл и закрываем редактор. Закрываем WinSCP. Возвращаемся в PowerShell и набираем reboot чтобы перезапустить наш сервер. Позле перезапуска снова входим по SSH для проверки.
На этом установка и первоначальная настройка Ubuntu Server закончена.