Как да се свържете с SSH в гостуваща виртуална машина на VirtualBox


Искате да се свържете чрез SSH към Linux гост ОС във VirtualBox? Ето как да го настроите с помощта на мостова мрежа или NAT с пренасочване на портовете.

VirtualBox е широко използван инструмент за виртуализация, често избираем за стартиране на Linux дистрибуции за тестване в изолирана среда или за настройка на сървър за специфични задачи.

В някакъв момент обаче, може да се наложи да се свържете чрез SSH към гостуваща виртуална машина на VirtualBox и да установите, че това не работи. Не се притеснявайте - не е голяма работа. Целият проблем зависи от това как са конфигурирани настройките на мрежата на вашия VirtualBox. В това ръководство ще ви покажа как бързо да ги настроите, така че да можете да активирате SSH достъп без никакви проблеми.

Ще разгледам два прости подхода: един, използващ мостова мрежа, и друг, използващ стандартната NAT конфигурация с добавено пренасочване на порт. Кой от тях ще изберете наистина зависи от вашето предпочитание, но в крайна сметка ще имате SSH достъп до вашата виртуална машина. И така, да започваме.

Уверете се, че SSH работи на гостуващата виртуална машина

Понякога, когато сме насочени към конкретен проблем, е лесно да пренебрегнем най-простата стъпка - като например да се уверим, че SSH сървърът наистина работи на вашата виртуална машина във VirtualBox. Да, знам, вероятно сте доста уверени, че вече работи, но никога не е излишно да проверите.

Най-неутралният начин да направите това е с командата по-долу. Просто влезте в своята виртуална машина и потвърдете, че изходът включва ред с „/usr/sbin/sshd."

pgrep -a sshd

Уверете се, че SSH работи на виртуалната машина на VirtualBox.

Ако видите резултат като горния, чудесно. Това означава, че SSH е активиран и работи на вашата VirtualBox виртуална машина. Разбира се, можете също да изпълните systemctl status ssh или systemctl status sshd — точното име на услугата зависи от вашата дистрибуция — за да проверите същото.

Въпреки това, ако командите по-горе не показват, че SSH работи (не връща нищо), ще трябва да го инсталирате и стартирате първо. Обхващането на тази настройка е извън обхвата на това ръководство, така че проверете документацията на вашата дистрибуция за подробни стъпки.

По подразбиране SSH слуша на порт 22 и, освен ако не сте променили тази настройка, той все още трябва да го използва. За да се уверите, можете да изпълните следната команда:

sudo netstat -tulnp | grep sshd

Проверете на кой порт слуша SSH.

Сега, с всичко на място, е време да преминем към основната част на това ръководство.

SSH към виртуална машина на VirtualBox: Мостов адаптер

Преди да преминем към конкретните промени, искам първо да поговоря малко за теорията - просто за да е ясно какво всъщност правим и, още по-важно, защо го правим.

По подразбиране, VirtualBox създава нови виртуални машини с NAT мрежа. В този режим, виртуалната машина стои зад вид вътрешен рутер, който VirtualBox създава. Гостът може да достигне до външния свят, но външният — включително вашата хост система — не може директно да инициира връзки обратно към виртуалната машина.

Това е причината, поради която опитът да се свържете с госта чрез SSH от хоста (или друга система) се проваля: NAT двигателят автоматично не пренасочва порт 22 (или всякакъв порт) от хоста към госта. За да преодолеете това, трябва да превключите вашата виртуална машина VirtualBox в режим на мостова мрежа.

Когато направите това, виртуалната машина вече не се крие зад NAT на VirtualBox. Вместо това, тя се свързва директно към същата физическа или Wi-Fi мрежа като хоста, действайки като просто още една машина в тази локална мрежа.

Това означава, че получава собствен IP адрес от DHCP сървъра на мрежата (или такъв, който зададете ръчно), и в този момент хостът - или която и да е друга машина в мрежата - може да се свърже с него през SSH, точно както биха направили с всяка друга компютърна машина. Така че, нека го направим. Това е проста задача.

Убедете се, че виртуалната машина е изключена първо. След това кликнете с десния бутон на мишката върху ВМ и изберете „Настройки“ от контекстното меню. Ако предпочитате, можете също да изберете ВМ и да кликнете върху бутона „Настройки“ под главното меню.

Отваряне на настройките на виртуалната машина на VirtualBox

Сега отидете на главното меню отляво и кликнете на "Мрежа." Изберете активния основен мрежов адаптер за вашата виртуална машина (обикновено "Адаптер 1"). След това отворете падащото меню "Прикачен към" и променете настройката от "NAT" на "Мостов адаптер."

Преминаване на мрежовия адаптер на виртуална машина VirtualBox в режим на мост.

Накрая, кликнете върху бутона “OK” в долния десен ъгъл, за да запазите промените си.

Приложете настройките.

Започнете виртуалната машина. За да се свържете, ще ви е необходим адресът на IP. Най-лесният начин да го намерите е да влезете локално и да изпълните командата по-долу.

ip a

Намиране на IP адреса на виртуалната машина.

Готов си да продължиш - отвори терминал на всяка машина в локалната си мрежа и изпълни стандартната SSH команда, за да достигнеш до виртуалната машина с Linux на VirtualBox.

ssh <user>@<host-lan-ip>

Успешно се свързахте с виртуалната машина Linux на VirtualBox през SSH.

SSH до VirtualBox VM: NAT с пренасочване на портове

Сега нека разгледаме друга опция за свързване с виртуална машина с Linux на VirtualBox чрез SSH — този път, използвайки режима по подразбиране NAT с активирано пренасочване на портове. За какво говоря?

VirtualBox позволява да препратите порт от хост машината към порт вътре в гостуващата виртуална машина. За SSH, обичайната настройка е да се препрати хост порт 2222 (или друг неизползван порт) към гост порт 22. С този правилос в сила, всяка връзка, направена към порт 2222 на хоста, автоматично преминава през NAT двигателя на VirtualBox и се доставя до SSH услугата на гостуващата виртуална машина. Ето как да го направите.

Отворете настройките на виртуалната машина, както беше описано в предишната секция. В лявата панелна част кликнете на „Мрежа“ и се уверете, че разглеждате активния мрежов адаптер, който вашата виртуална машина използва (полето „Активиране на мрежовия адаптер“ трябва да бъде отметнато). В падащото меню „Свързан към“ изберете „NAT.“ Сега за забавната част—натиснете бутона „Пренасочване на портовете“.

Настройване на мрежовия адаптер на виртуална машина във VirtualBox за NAT + пренасочване на портове.

Ще се отвори нов прозорец, в който можете да настройвате правилата за пренасочване на портове. Ето какво означава всяка опция:

  • Име: Това е просто етикет. Можете да напишете каквото име искате. Най-простият избор, разбира се, е просто “SSH.”
  • Протокол: Оставете това по подразбиране, “TCP.”
  • IP на хоста: Използвайте 0.0.0.0. Това означава „слушайте на всички мрежови интерфейси на хоста.“ С други думи, връзки към хоста от всякъде (обратен цикъл, LAN или дори WAN, ако е изложен) ще бъдат приемани.
  • Хост порт: Това е портът на хост машината, който ще бъде отворен. Ако се свържете с хоста на порт 2222, трафикът ще бъде пренасочен към виртуалната машина.
  • IP адрес на госта: Това е вътрешният IP адрес, назначен от NAT за гостуващата виртуална машина. Въведете IP адреса на вашата виртуална машина, точно както го намерихме в предишния раздел.
  • Порт за гости: Това е портът, на който SSH сървърът слуша вътре в виртуалната машина. По подразбиране това е 22.

Когато сте готови, потвърдете с бутона "ОК".

Настройка на правило за пренасочване на портове за Linux гостуваща виртуална машина.

Накрая, не забравайте отново да кликнете на бутона „ОК“ в долния десен ъгъл, за да запазите всички направени до момента промени.

Стартирайте виртуалната машина. От всяка друга компютърна машина в локалната мрежа - или дори от хоста на VirtualBox - изпълнете командата по-долу. Обърнете внимание, че този път добавяме опцията -p, която казва на SSH да се свърже през порт 2222 на хоста. Това е портът, който конфигурирахме по-рано при настройването на пренасочването на портове.

ssh -p 2222 <user>@<host-lan-ip>

И точно така, успешно се свързахме чрез SSH към нашия VirtualBox Linux гост. Ако имате повече от една Linux виртуална машина и искате да направите същото с тях, просто настроите ново правило за пренасочване на порт с различен свободен порт - да речем 2223. След това, когато се свързвате, уверете се, че използвате този номер на порта с опцията -p в командата ви за SSH.

Заключение

Както можете да видите, получаването на SSH достъп до вашия VirtualBox гост не е сложно, след като разберете как работи мрежовата свързаност. Независимо дали избирате мостова мрежа за по-пряка връзка или оставате с NAT и добавяте пренасочване на портове, и двата метода вършат работата. Изборът в голяма степен зависи от това как предпочитате да управлявате свързаността на вашите виртуални машини.

Благодаря ви за времето! Надявам се да намерите това ръководство полезно. Както винаги, всяко мнение е много оценено.