- Как подключиться к виртуальной машине VirtualBox по SSH
- Проброс портов для SSH
- Подключение через сетевой мост
- Настройка сети и доступа по ftp и ssh к гостевой машине в Virtualbox
- How to SSH into VirtualBox machine
- Content
- Why SSH into VirtualBox?
- Prepare VirtualBox
- Install SSH in VirtualBox OS
- Open SSH port in Firewall
- VirtualBox network settings
- Install SSH client
- Connect to VirtualBox from the guest OS
- Connect to VirtualBox from another computer
- Switch to the Bridge Adapter in VirtualBox
- Find out your VirtualBox IP
- SSH to VirtualBox from another computer
- Final thoughts
Как подключиться к виртуальной машине 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 ».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.
Настройка сети и доступа по ftp и ssh к гостевой машине в Virtualbox
Есть два способа настроить доступ по сети к гостевой машине Linux на Virtualbox.
- Подключить виртуальный адаптер хоста VirtualBox Host-Only Ethernet Adapter и настроить интерфейс соответствующей сети (enp0s8 обычно называется)
- Проброс портов от хостовой к гостевой машине
Давайте рассмотрим обе настройки подробно. В первом случае у нас появится полный доступ по ssh, ftp, sftp, http, https, а во втором просто по http. Итак, способ 1. Нам понадобится зайти в:
Virtualbox > Инструменты > Сеть > Создать
Создаём виртуальную сеть хоста, если её ещё нет и настраиваем следующим образом:
DHCP сервер настраиваем так:
Теперь жмём WIN+X(или правый клик на пуск) переходим в сетевые подключения > правый клик на VirtualBox Host-Only Network > меню свойства > выбираем свойства ipv4
Вроде там и так всё должно быть как надо, но проверить не помешает. Здесь у нас должно быть всё вот так:
Теперь в VirtualBox выбираем необходимую linux машину, переходим в её настройки > сеть и включаем адптер 2, выбрав виртуальный адаптер хоста следующим образом:
Пришло время запустить машину и взглянуть на её сетевые интерфейсы. В терминале нашей гостевой тачки выполняем: ip a Тут мы видим два интерфейса: enp0s3 — это наш адаптер 1 или интерфейс сети NAT, через него у нас подключен инет на гостевой машине и enp0s8 — наш виртуальный адаптер хоста VirtualBox Host-Only Network
Кстати, сетевые интерфейсы могут называться и иначе в других дистрибутивах linux — eth0, eth1, это не принципиально. Тогда просто по образу и подобию делать. Редактируем: nano /etc/network/interfaces Добавить следующие строки:
#static ip debian 9 auto enp0s8 iface enp0s8 inet static address 192.168.56.11 netmask 255.255.255.0
В параметре address можно указать любой адрес между нижней и верхней границей ip адресов DHCP сервера. У нас в данном случае это 192.168.56.3 — 192.168.56.254
Перезагружаем linux машину и пользуемся. Естественно на госте ещё должен быть установлен и запущен соответствующий сервер(ssh, http), но это другая история. Если вы используете панель vesta — у вас уже всё установлено. Подключаемся: ssh [email protected] Кстати, тут описано почему ssh не подключается под root и как исправить. Адрес 192.168.56.11 у нас теперь пингуется и если установлен какой-нить http сервер, то и доступен из адресной строки. Теперь мы можем назначить ему соответствующий домен, прописав его в C:\Windows\system32\drivers\etc\hosts и обращаться из браузера по домену.
Рассмотрим второй случай — проброс портов. Тут нам понадобится лишь 1 адаптер, жмем в настройках сети проброс портов и после таких настроек:
How to SSH into VirtualBox machine
You will learn how to SSH into a VirtualBox guest machine from a local host computer as well as from another computer. I use SSH as an example here, but these settings will work for other scenarios such as a web-server on your VirtualBox machine.
Content
Why SSH into VirtualBox?
There are multiple reasons you may want to connect to your VirtualBox guest OS through SSH or other means. I often do that to test various things including:
I use SSH as an example here because it is the simplest use case. However, these settings will work for other scenarios as well. You just need to install the necessary software and configure the corresponding ports in your VirtualBox OS. The rest is the same.
Prepare VirtualBox
Install SSH in VirtualBox OS
First, let’s install SSH in the VirtualBox OS. I assume you run a Debian-based distro such as Ubuntu in your VirtualBox. I have a detailed guide on how to install, configure and use SSH on Linux, if you need instructions for other Linux distros.
In Ubuntu, you need to install the OpenSSH server package:
sudo apt install openssh-server
After the installation, check the SSH status:
sudo systemctl status ssh
You should see that it is active:
If it is not, enable and start it manually:
sudo systemctl enable ssh --now sudo systemctl status ssh
Open SSH port in Firewall
If you have a firewall enabled in your VirtualBox, it may block your SSH connection. You can find what ports are open with this command:
sudo lsof -i -P -n | grep LISTEN
If you do not find the port 22 among open ports, open it in your firewall:
sudo ufw allow ssh sudo ufw status verbose
VirtualBox network settings
To open VirtualBox for SSH connections, we need to change the VirtualBox network settings to allow the SSH connection. Navigate to VirtualBox settings -> Network and make sure you have the settings Attached to NAT.
Then go to Advanced -> Port Forwarding and add these settings:
- Name: ssh (or whatever you like)
- Protocol: TCP
- Host Port: 2222 (or any other port you like)
- Gust port: 22
The IP fields can be left empty.
Similarly, you can also set port forwarding for other interfaces.
Install SSH client
To be able to SSH into the VirtualBox OS, you must have an OpenSSH client installed on the computer you are going to connect from e.g. your host computer or your another computer:
sudo apt install openssh-client
If you use Windows as a client, install PuTTY.
Connect to VirtualBox from the guest OS
Now, connect to the VirtualBox OS using the port 2222 that we set earlier and the username of your VirtualBox OS:
ssh -p 2222 virtualbox-user-name@localhost
If you get a warning “Are you sure you want to continue connecting (yes/no)?”, type yes. You would also have to type the password of your VirtualBox user.
Now, you should have an SSH connection to your VirtualBox OS.
Connect to VirtualBox from another computer
Connecting to VirtualBox from another computer is a little more complicated. You need to change the network settings of your VirtualBox and also find out the IP address of your VirtualBox.
Switch to the Bridge Adapter in VirtualBox
The Bridge Adapter creates a routing that makes your VirtualBox network interface look like your host network interface. That way, you can to reach your VirtualBox machine from another machine.
You need to go to VirtualBox network settings and switch from NAT to Bridge Adapter.
Find out your VirtualBox IP
You can find your VirtualBox IP address, if you run this command:
You can also find it in the graphical network settings:
Note, this is your private IP address and to access it you need to be in the same network. You can SSH to your Virtualbox from outside of your local network if you use your public IP and configure the SSH port forwarding in your router. This poses an extreme security risk to your system, so I do not recommend doing so.
If you still want to do that, you can find out your public IP if you just google my ip . To configure the SSH port forwarding in your router, you need to follow the instruction of your router. The settings vary from model to model. This is how it looks in my router:
Also, follow these SSH security measures:
- use a strong password and SSH key authentication
- disallow root access over SSH
- do not use the default 22 port
- disallow numerous SSH login attempts.
SSH to VirtualBox from another computer
Use the IP address you noted earlier to connect to the VirtualBox OS from another computer :
ssh virtualbox-user-name@virtualbox-ip-address
Final thoughts
Now, you know how to SSH into a VirtualBox machine. VirtualBox provides endless possibilities for other tests and I hope now when you know the principle, you would be able to configure it for other use cases as well.
If you want to learn more about SSH, I have a detailed guide on how to install, configure and use SSH on Linux and how to enhance the security of your SSH connection with SSH keys and white-listed IP addresses.
Average Linux UserFollow I am the founder of the Average Linux User project, which is a hobby I work on at night. During the day I am a scientist who uses computers to analyze genetic data.