После установки серверного дистрибутива 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 нам нужно выполнить следующую команду:
ssh user@localhost -p 2222
Где «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 нужно выполнить следующую команду:
ssh [email protected]
Где «user» — это имя пользователя, а «192.168.1.214» — это ее IP адрес.
Аналогично работает и подключение с помощью PuTTY. Вводим «192.168.1.214» и подключаемся по стандартному порту «22».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.
Спасибо
СПАСИБО 2-Й ВАРИАНТ Очень спасибо короче. !!!
С П А С И Б О !
Спасибо! 1 вариант сработал сразу. Второй пока не смотрел, но страница ваша в закладках. Буду возвращаться.
п.с. Тем более, что тему Как сделать общую папку в VirtualBox тоже собираюсь рассмотреть. Еще раз, спасибо.
Я использую сетевой мост, ip виртуалки не меняется.
Возможно что-то не так с настройками сети в операционной системе на виртуальной машине.
Актуально работает на 04.01.2022, на Linux в терминале сработало на ура.
Естественно, актуально. Настройки VirtualBox практически не меняются от версии к версии.
Большое спасибо
А если ответ такой:
ssh: connect to host localhost port 2222: Connection refused
Какие-то проблемы с подключением, возможно:
Если не получается разобраться, попробуйте 2 способ, с подключением через сетевой мост.
Спасибо, второй способ сработал
СПАСИБО!)
Пробовал и первый и второй способ через putty. не пускает, пишет ошибка cети. Что можно предпринять?
Выше писал, причины те же.
Кроме этого, при использовании сетевого моста нужно проверить пинг. Если виртуальная машина не пингуется, то разобраться почему. Возможно сетевое подключение в Windows нужно переключить из «Общественная сеть» в «Частная сеть».
Огромное спасибо!
Спасибо чувак! Очень мучался до этого! А решение очень просто