Как подключиться к ВМ с NAT через протокол SSH? (Qemu/KVM)

Вопрос или проблема

Мне нужен ваш совет.

Кратко о моем вопросе:

У меня есть две машины на Linux/Ubuntu 18.04 Lts. Первая из них – это хост (SSHD), на котором установлена виртуальная машина (сетевая карта виртуальной машины настроена как NAT: Qemu/KVM – виртуализация). Простое SSH-соединение между хостом и виртуальной машиной в режиме NAT работает отлично:
ssh [email protected] > pass

Первая машина подключена к маршрутизатору через LAN, а вторая машина является ssh-клиентом, подключенным к маршрутизатору по Wifi.

машина1 (хост-машина, LAN) > Маршрутизатор < (wifi) машина2 (SSH клиент)

Есть ли какое-либо решение для доступа к виртуальной машине (на хост-машине) с машины, подключенной только к сети Wi-Fi? Я достаточно нов в Unix/Linux, поэтому очень оценю вашу помощь в этом случае.

ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.x netmask 255.255.255.0 broadcast 192.168.122.255

P.S. Я предпочел бы не переключать NAT в режим моста. Если вам нужно больше данных, я с радостью предоставлю вам дополнительные детали.

Если вы можете подключиться по ssh к физическому хосту со своего клиента и к виртуальной машине с физического хоста, то просто….

ssh -J [email protected] [email protected]

(в качестве альтернативы создайте ssh_config для vm.example.com с установленным ProxyJump на phys.example.com)

Если у вас есть KVM Manager (GUI), вы можете следовать этому руководству без проблем. Процесс тот же: Портовое переадресовывание VMware Workstation

Ответ или решение

Чтобы подключиться к виртуальной машине (VM), работающей под управлением Qemu/KVM с использованием NAT, с клиента, подключенного к Wi-Fi, вы можете воспользоваться методом SSH через промежуточный хост (жирный физический хост). Предполагаем, что у вас есть доступ к SSH на физическом хосте (первом устройстве), а также возможность подключаться к виртуальной машине с этого хоста.

Шаг 1: Убедитесь, что вы можете подключиться к физическому хосту

Сначала проверьте, что вы можете подключиться к физическому хосту из вашего клиента. Используйте команду:

ssh [пользователь]@[IP-адрес_физического_хоста]

Шаг 2: Проверка доступа к виртуальной машине

После подключения к физическому хосту убедитесь, что вы можете подключиться к виртуальной машине. Используйте команду:

ssh [пользователь]@[IP-адрес_VM]

Шаг 3: Настройка подключения через SSH

Если подключения работают нормально, вам нужно использовать ProxyJump для автоматизации процесса подключения к виртуальной машине через физический хост. Для этого вам нужно отредактировать файл конфигурации SSH (обычно он находится в ~/.ssh/config). Добавьте следующее:

Host vm.example.com
    HostName [IP-адрес_VM]
    User [пользователь_VM]
    ProxyJump [пользователь]@[IP-адрес_физического_хоста]

Замените [пользователь], [IP-адрес_физического_хоста], [пользователь_VM] и [IP-адрес_VM] на ваши значения.

Теперь вы сможете подключаться к виртуальной машине с клиента с помощью простой команды:

ssh vm.example.com

Шаг 4: Альтернативный способ – использование SSH через прокси

Если вы не хотите редактировать конфигурационный файл SSH, вы можете использовать прямую команду SSH с опцией -J, чтобы задать промежуточный хост:

ssh -J [пользователь]@[IP-адрес_физического_хоста] [пользователь_VM]@[IP-адрес_VM]

Дополнительные настройки (если необходимо)

Если для доступа к виртуальной машине необходимо перенастроить параметры NAT (например, для переадресации портов), вот пример, как это можно сделать:

  1. Откройте файл конфигурации виртуальной машины (обычно расположен в /etc/libvirt/qemu/).
  2. Найдите секцию для интерфейса сети и добавьте переадресацию портов. Пример:
<port forwarding>
    <forwarding protocol='tcp' port='2222' />
</port forwarding>

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

Теперь, если вы настроили переадресацию так, вы сможете подключиться следующим образом:

ssh -p 2222 [пользователь_VM]@localhost

Заключение

Таким образом, подключение к виртуальной машине с использованием SSH из клиентского устройства на Wi-Fi возможно через SSH-подключение к физическому хосту. Выбор между редактированием конфигурации SSH или использованием команды с опцией -J зависит от ваших предпочтений. Если у вас есть дополнительные вопросы или потребуется помощь, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...