Как получить доступ к виртуальной машине в KVM без ssh?
Как я могу получить доступ к виртуальной машине в KVM без ssh, порт ssh отключен, и я хочу войти в виртуальную машину и включить ее. Я пыталсяvirsh console
и решения VNC, они не работали, потому что они не включены изнутри. Кажется, что невозможно войти в виртуальную машину. Есть ли способ войти?
2 ответа
Самый простой способ получить доступ к консолям виртуальных машин — это программа под названием . Это программа с графическим интерфейсом, которая представляет собой решение «все в одном» для управления виртуальными машинами в целом — создание, изменение, запуск/остановка их и т. д.
Возможно, вы уже установили его на свой сервер как часть установки KVM. Если нет, установите его, как обычно, установите любое программное обеспечение, используя команду
sudo apt install virt-manager
Вы должны запускать с привилегиями root (в противном случае могут возникнуть проблемы при общении сlibvirtd
демон на вашей машине), т.е.
sudo -b virt-manager
(-b
параметр указывает на запуск программы в фоновом режиме — как обычно запускаются программы с графическим интерфейсом — чтобы избежать блокировки терминала).
Программа в основном не требует пояснений, и с ее помощью вы можете легко получить доступ к консоли виртуальной машины.
Однако, поскольку это программа с графическим интерфейсом, сложная часть заключается в том, как заставить ее работать на удаленном сервере, к которому вы обращаетесь через SSH (я так полагаю, потому что вы не указали, как именно вы получаете доступ к серверу).
Запуск программы с графическим интерфейсом на удаленном сервере требует двух вещей:
- X-сервер, работающий на локальном компьютере (с которого вы подключаетесь к серверу по SSH), чтобы иметь возможность отображать графический интерфейс и
- настроена переадресация X через SSH между удаленным и локальным компьютером.
Что касается 2), вам нужно отредактировать файл/etc/ssh/sshd_config
на вашем сервере и проверьте, содержит ли он строку, которая говорит
X11Forwarding yes
Обычно это не так, поэтому вам нужно добавить эту строку и сохранить измененный файл (примечание: вы должны сделать это как root, например, используйтеsudo
для вызова предпочитаемого вами редактора файла). После этого нужно перезапустить службу ssh:
sudo service ssh restart
Что касается 1) самый простой случай — это когда ваша локальная машина также является машиной Linux, так как на ней уже работает X-сервер для работы с локальным графическим интерфейсом :). В этом случае ничего особенного делать не нужно, кроме добавления параметра в команду при подключении к серверу:
ssh -X youruser@yourserver
Параметр сообщает о пересылке графического интерфейса через SSH на локальный X-сервер, поэтому программа, работающая на сервере, будет отображать свой графический интерфейс на вашем локальном компьютере.
Если ваш локальный компьютер является компьютером с Windows, вам необходимо установить локально некоторое программное обеспечение, обеспечивающее функциональность X-сервера (например, Xming). После запуска X-сервера вам нужно указать вашему SSH-клиенту перенаправить графический интерфейс. Точный способ, как это сделать, зависит от используемого вами SSH-клиента.
Если вы используете встроенную команду в Windows 10/11, она должна поддерживать эту опцию так же, как и в Linux (но я ее не тестировал).
Если вы используете PuTTY (который, вероятно, является самым популярным SSH-клиентом для Windows), перед открытием подключения вам следует перейти в Connection -> SSH (нажмите «+», чтобы развернуть) -> X11 на экране параметров, а затем отметить флажок "Включить переадресацию X11" - это эквивалентно указанию-X
параметр вssh
команда (я протестировал ее и могу подтвердить, что она работает).
Ниже вы можете увидеть скриншотvirt-manager
доступ к консоли виртуальной машины на сервере (сервер в данном случае — CentOS, локальная машина — довольно старая версия Ubuntu, виртуальная машина — OpenWRT :)):
Как упоминалось ранее, предложение Раджа внесло следующие изменения для решения проблемы, с которой я столкнулся:
I used "virt-manager" instead of "sudo -b virt-manager".
I used "sudo usermod -a -G libvirt $USER" to add user to the "libvirt" group because it was encountering a permission error.
Использование «virt-manager» вместоsudo -b virt-manager
предназначен для того, чтобы избежать использования команды «sudo», которая повышает привилегии и может вызвать проблемы с отображением. Использованиеsudo usermod -a -G libvirt $USER
добавляет пользователя в группу «libvirt», чтобы устранить ошибку разрешения, препятствовавшую подключению к демону libvirt.