Подключение к виртуальным машинам#
Для взаимодействия с ВМ в SberLinux OS используется терминал SSH. В случае, если ВМ недоступна из системы по сети, можно воспользоваться консолью virsh.
Если ВМ, к которым необходимо подключиться, находятся на удаленном хосте, существует возможность настроить систему для более удобного доступа к ним. Подробнее в разделе «Настройка упрощенного доступа к удаленным узлам виртуализации».
Подключение к виртуальной машине с использованием SSH#
Чтобы взаимодействовать с терминалом ВМ по протоколу SSH, выполните приведенный ниже сценарий.
Предварительные условия#
Перед подключением проверьте, что:
у пользователя есть сетевое подключение и полномочия администратора (например, root) для доступа к целевой ВМ.
если целевая ВМ расположена на удаленном хосте, есть подключение и полномочия администратора (например, root) для доступа к данному хосту.
сеть ВМ назначает IP-адреса с помощью
dnsmasq, сгенерированногоlibvirt. Требуется, например, в сетяхlibvirtNAT.Внимание
Подключиться с помощью SSH к ВМ невозможно, если используется одна из следующих сетевых конфигураций:
hostdev-интерфейсы;direct-интерфейсы;bridge-интерфейсы.
компонент
libvirt-nssустановлен и включен на хосте ВМ. В ином случае выполните следующие действия:Установите пакет
libvirt-nss:dnf install libvirt-nssВ файл
/etc/nsswitch.confк строкеhostsдобавьтеlibvirt_guest:... passwd: compat shadow: compat group: compat hosts: files libvirt_guest dns ...
Сценарий#
Для подключения к удаленной ВМ:
Подключитесь по SSH к соответствующему физическому хосту:
ssh root@hh.hh.hh.hhКоманда выше выполняет подключение к хосту с IP-адресом
hh.hh.hh.hhс использованием учетных данных пользователя с полномочиями администратораroot.Команда запросит пароль при подключении:
root@hh.hh.hh.hh's password:И выведет следующую информацию при успехе:
Last login: Mon Sep 24 12:05:36 2023Подключитесь к ВМ, используя ее имя и учетные данные доступа пользователя:
ssh root@<example-vm>В примере выше осуществляется подключение к ВМ
<example-vm>с учетными данными пользователя с административными полномочиямиroot.Пример вывода команды, включая запрос пароля:
root@<example-vm>'s password: Last login: Wed Sep 12 12:05:36 2023
Устранение ошибок#
Если имя ВМ неизвестно, выведите список всех ВМ, доступных на хосте, используя команду virsh list --all:
virsh list --all
Пример вывода команды:
Id Name State
----------------------------------------------------
2 <example-vm-1> running
- <example-vm-2> shut off
Открытие последовательной консоли виртуальной машины#
К последовательной консоли ВМ можно подключиться, используя команду virsh console.
Данный вариант подключения используется, когда ВМ:
не поддерживает протоколы VNC и, следовательно, не использует отображение видео для инструментов с графическим интерфейсом;
не имеет сетевого подключения на хосте и, следовательно, не может взаимодействовать через SSH.
Предварительные условия#
Перед подключением к последовательной консоли ВМ убедитесь, что:
Загрузчик GRUB на хосте должен быть настроен на использование последовательной консоли. Убедитесь, что файл
/etc/default/grubсодержит параметрGRUB_TERMINAL=serial.На ВМ настроено устройство последовательной консоли, например,
console type='pty'. Проверьте с помощью команды:virsh dumpxml <example-vm> | grep consoleПример вывода команды:
<console type='pty' tty='/dev/pts/2'> </console>В примере выше содержится информация о консоли ВМ
<example-vm>.На ВМ настроена последовательная консоль в командной строке ядра. Проверьте настройки на ВМ с помощью команды:
cat /proc/cmdlineПример вывода команды:
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-362.18.1.sl9_3.2.x86_64 root=/dev/mapper/sberlinux-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=sberlinux/root rd.lvm.lv=sberlinux/swap rhgbВывод должен содержать параметр
console=ttyS0.Примечание
Если последовательная консоль на ВМ настроена неправильно, команда
virsh consoleподключится к не отвечающей гостевой консоли. Для выхода в этом случае можно использовать сочетание клавишCtrl+].Чтобы установить последовательную консоль на ВМ, выполните следующие действия:
Включите на ВМ опцию ядра
console=ttyS0:grubby --update-kernel=ALL --args="console=ttyS0"Очистите параметры ядра, которые могут помешать вступлению изменений в силу:
grub2-editenv - unset kerneloptsПерезагрузите ВМ.
Служба
serial-getty@<console-name>должна быть включена. Проверьте статус с помощью команды:systemctl status serial-getty@<console-name>Где
<console-name>– имя консоли.
Сценарий#
Подключитесь к ВМ с помощью команды virsh console на соответствующем хосте:
virsh console <example-vm> --safe
Команда осуществит подключение к ВМ <example-vm> при условии, что драйвер libvirt поддерживает безопасную работу с консолью.
Пример вывода команды:
Connected to domain '<example-vm>'
Escape character is ^]
Subscription-name
Kernel 5.14.0-362.18.1.sl9_3.2.x86_64 on an x86_64
localhost login:
Взаимодействие с консолью virsh осуществляется таким же образом, как и со стандартным интерфейсом командной строки.
Настройка упрощенного доступа к удаленным узлам виртуализации#
При управлении ВМ на удаленном хосте с помощью утилит libvirt рекомендуется использовать синтаксическую конструкцию -c qemu+ssh://root@hostname/system. Например, для использования команды virsh list от имени пользователя с административными полномочиями root на хосте hh.hh.hh.hh:
virsh -c qemu+ssh://root@hh.hh.hh.hh/system list
Пример выполнения команды, включая ввод пароля пользователя:
root@hh.hh.hh.hh's password:
Id Name State
---------------------------------
1 <guest-vm> running
Можно исключить необходимость указывать детали подключения, изменив конфигурацию SSH и libvirt. Синтаксис команды в таком случае будет выглядеть так:
virsh -c <remote-host> list
Где <remote-host> - удаленный хост, на котором необходимо управление ВМ.
Пример выполнения команды, включая ввод пароля пользователя:
<remote-host>'s password:
Id Name State
---------------------------------
1 <guest-vm> running
Сценарий#
Чтобы настроить упрощенный доступ, воспользуйтесь следующим сценарием:
Отредактируйте файл
~/.ssh/config, указав следующее:Host <remote-host-alias> User root Hostname hh.hh.hh.hhГде
<remote-host-alias>- псевдоним удаленного хостаroot@hh.hh.hh.hh.Отредактируйте файл
/etc/libvirt/libvirt.conf, добавив следующее:uri_aliases = [ "<qemu-host-alias>=qemu+ssh://<remote-host-alias>/system", ]Где
<qemu-host-alias>- это псевдоним, который утилитыqemuиlibvirtбудут связывать с хостомroot@hh.hh.hh.hh.
Примечание
Если нужно использовать утилиты libvirt только на одном удаленном хосте, есть возможность установить определенное соединение в качестве целевого по умолчанию. Для этого отредактируйте файл /etc/libvirt/libvirt.conf и установите значение параметра uri_default равным qemu-host-alias:
# These can be used in cases when no URI is supplied by the application
# (@uri_default also prevents probing of the hypervisor driver).
#
uri_default = "<qemu-host-alias>"
Все команды, основанные на libvirt, будут автоматически выполняться на указанном удаленном хосте, например:
virsh list
Пример выполнения команды, включая ввод пароля пользователя:
root@hh.hh.hh.hh's password:
Id Name State
---------------------------------
1 <guest-vm> running
Этот способ не рекомендуется, если требуется также управлять другими ВМ на локальном хосте или на других удаленных хостах.
Проверка#
Убедитесь, что настроено управление удаленными ВМ с помощью утилит на основе libvirt в локальной системе с добавленным параметром -c <qemu-host-alias>. Удаленное управление обеспечивает автоматическое выполнение команд по SSH на удаленном хосте.
В примере ниже приведена команда, демонстрирующая выполнение команды на удаленном хосте с учетом настройки упрощенного доступа:
virsh -c <qemu-host-alias> list
Пример выполнения команды, включая ввод пароля пользователя:
root@hh.hh.hh.hh's password:
Id Name State
---------------------------------
1 <guest-vm> running
Команда осуществит подключение к удаленному хосту и выведет список ВМ.
Примечание
Кроме команды virsh, опция -c (или --connect) и конфигурация удаленного доступа к хосту, описанные выше, могут быть использованы утилитами virt-install и virt-viewer.