понедельник, 7 октября 2019 г.

Proxmox VE. Удаленный доступ к виртуальной машине

Хочу описать средства, предоставляемые Proxmox VE, для доступа к виртуальным машинам. Как я понимаю, концепция разработчиков в том, что в продакшне доступ к виртуальной машине должен осуществляться средствами гостевой ОС, что в прочем то логично и секьюрно. Но в некоторых случаях (например инсталяция VM, или вы строите закрытую виртуальную среду использующую внутреннюю виртуальную сеть, доступ к которой из вне не предусмотрен), есть необходимость получать доступ к гостевой системе с помощью стедств, предоставляемых гипервизором.
На данный момент мне известно 3 временных способа и один постоянный. В первых 2 случаях нужен доступ к вебинтерфейсу Proxmox VE каждый раз для начала сеанса, в 3м - 1 раз для разрешения подключений(действует до перезагрузки гостя), в 4м - действует постоянно.

По порядку:

  1. noVNC - способ по умолчанию - используется при нажатии вкладки VM "Консоль"
    Консоль по умолчанию noVNC
    Окно можно открепить от веб-интерфейса Proxmox VM и использовать отдельно:
    Kонсоль noVNC откреплена
  2. Консоль SPICE(самый интересный вариант) - требует установки приложения virt-viewer и типа видеоадаптера VM SPICE (glx)
    Выбираем тип видеоадаптера SPICE(glx)
    Выбираем SPICE
    SPICE virt-viewer
    Должна быть ассоциация с virt-viewer
    <alt-ctrl-R> для освобождения курсора
    проброс USB в VM
    Можно в VM добавить устройство USB
    После этого в меню Файл virt-viewer, можно выбрать пробрасываемое USB устройство
    Выбор пробрасываемого USB в virt-viewer
     После чего устройство появится в VM
    Проброс USB с клиента в VM
    Флешка моей машины появилась в Windows госте
    Для получения всех преимуществ SPICE имеет смысл установить SPICE vdagent и SPICE WebDAV daemon подробности тут.
  3. Сторонний клиент VNC(не рекомендуемый способ, действует до перезапуска VM):
    Пункт меню виртуальной машины "Монитор", выполнить команду
    change vnc 0.0.0.0:10
    Гость Proxmox по VNC
    Подключаться любым VNC клиентом на IP_гипервизора:5910(стандартный VNC порт 5900 + указанный в команде - 10)
    Для защиты VNC паролем выполнить в мониторе последовательно:
    change vnc 0.0.0.0:10,password
    set_password vnc my_password
    Для разных VM порты не должны совпадать!
  4. Перманентный доступ по VNC(сохраняется при перезапуске VM)
    Добавить в конфигурационный файл VM на гипервизоре /etc/pve/local/qemu-server/.conf
    строку args: -vnc 0.0.0.0:10
    Защита паролем недоступна - самый небезопасный способ!

22 комментария:

  1. Александр, разъясните, пож-ста, каким образом возможно подключение по протоколу SPICE (2 способ в вашей статье) но через клиент Remmina? Он поддерживает этот протокол как отдельное дополнение, но как практически осуществлять такое подключение?
    Разъясните также подробно как в этой статье или просто добавьте в неё информацию о таком способе подключения!

    ОтветитьУдалить
    Ответы
    1. Я использую virt-viewer, с Remmina, наверное не получится, так как вы по сути скачиваете временный токен, который открываете с помощью настроенного приложения по умолчанию. Remmina - это оболочка для разных протоколов - как бы комбайн, я тоже изначально пытался использовать ее, но это противоречит концепции авторов - тогда уже лучше vnc использовать - он позволит иметь постоянные настройки соединения

      Удалить
  2. Что скачиваемый файл является временным токеном согласен, у него даже есть ограничение на время подключения - если вышло то подключения не произойдёт. Но как же тогда организовать подключение к виртуальной машине через протокол SPICE с бездискового клиента, загружающегося по сети через РХЕ?
    Есть возможность для этого сделать какие-то тонкие настройки протокола SPICE на самом гипервизоре?

    ОтветитьУдалить
    Ответы
    1. А какая в этом необходимость? Подключение средствами гипервизора существует для административных задач. Для рабочего решения, подключение надо реализовывать средствами гостевой системы. По хорошему - ваши пользователи вообще не должны знать о существовании гипервизора.

      Удалить
  3. Причины у меня достаточно весомые: используя протокол SPICE я могу подключаться к гостевой Windows 10 и работать одновременно на нескольких мониторах (пока практически не проверял но уверен что это будет работать), легко пробрасывать в гостевую машину любые USB-устройства, автоматически (предположительно) задействовать при выводе графики аппаратное ускорение видеокарты клиентской машины (если оно присутствует) - насколько я знаю, ничего этого стандартный для Windows протокол RDP различных версий делать не может в принципе, так что это всё очень важные моменты для меня! И лучше всего это было бы реализовать через рабочую станцию с удалённой загрузкой по протоколу PXE c узла в локальной сети некоего собранного со всем необходимым для этого ISO-образа.

    ОтветитьУдалить
    Ответы
    1. Тут я пока ничего не подскажу

      Удалить
    2. Поразмыслил над вопросом: к одной виртуалке будет подключаться один клиент? Если да, то можно обойтись на тонком клиенте броузером и virt-viewer, настроить права на гипервизоре, чтоб пользователь имел доступ только к своей виртуалке.

      Удалить
  4. Александр, спасибо за идею подключения через браузер на тонком клиенте - почитаю об этом и попробую реализовать самостоятельно, а сейчас хочу попросить помочь объяснить как же всё-таки практически можно использовать расшаренную папку при подключении через virt-viewer в виртуальных машинах с гостевой системой Windows? Пишут что для этого необходимо использовать spice-webdavd сервис установив Windows SPICE agent, я скачал и установил его но ничего не происходит, понятной инструкции найти не смог - делали когда-нибудь такое подключение?

    ОтветитьУдалить
    Ответы
    1. Можно уточнить задачу?
      Какой конечный результат мы хотим иметь?
      Я больше RDP использую, в нем вроде все просто.

      Удалить
  5. Да, конечно: при подключении к виртуальной машине (ВМ) с гостевой ОС Windows через virt-viewer, в меню Файл можно выбрать Настройки (Preferences), тогда появляется возможность указать папку на своей локальной машине, которой можно поделиться с гостевой виртуальной машиной, но эта функция неактивна - как я прочитал для этого как раз и требуется использовать spice-webdavd сервис установив Windows SPICE agent но как это сделать практически я так и не понял - нигде не смог найти инструкцию в картинках или с полным описанием требуемых действий.

    ОтветитьУдалить
    Ответы
    1. Цитата:
      Для гостевой системы Windows
      1. Отключите файрвол Windows
      2.Как администратор установите spice-webdavd в Windows госте, с https://www.spice-space.org/download/windows/spice-webdavd/, и включите spice-webdavd службу в менеджере задач.
      Собираюсь установить Windows гостя и проверить.

      Удалить
    2. Проверил
      Добавил в пост ссылки на скачивание SPICE guest и SPICE WebDAV.
      Как я понял, для работы проброса папок в госте должно быть устройство WebDAV, которого нету в списке на добавление. Наверное в этой версии Proxmox через Веб консоль это не делается, надо изучать возможность в командной строке.
      На гостя надо ставить spice-guest-tools и WebDAV daemon, но как я написал выше демон не стартует - нет устройства.
      Когда дойдут руки попробую разобраться и описать.

      Удалить
  6. Спасибо за оперативную попытку помощи, я тоже самое проделал: установил в гостевой Windows 10 этот spice-webdavd сервис и не понял как его запустить и вообще что с ним делать дальше - никаких подсказок не было, инструкций внятных тоже... Надеюсь получится с ним разобраться и заставить работать!

    ОтветитьУдалить
    Ответы
    1. В общем победил я:
      1. Необходимо обновить Proxmox до 6.1
      2. В параметрах VM появится опция "Spice Enhancement", необходимо в ней поставить птицу Folder Sharing или выполнить в консоли гипервизора:
      qm set VM_id -spice_enhancements foldersharing=1
      3. В госте должны быть установлены:
      Qemu guest agent с virt-drv
      Spice guest tools
      Spice Webdavd
      4. В Remote wiever указать папку, которой делиться и она будет подключена как сетевая в гостя.
      Проверял на Windows 7 x64 pro.

      Удалить
  7. Очень странно что требовалась такая свежайшая версия Proxmox...
    В гостевой OC Windows 10 всё установил, в параметрах разрешил Folder Sharing но в remote-viewer так и не даёт выбрать папку для расшаривания! Пытаюсь получить тоже с Windows 10, а в ней ничего не нужно устанавливать? Сделал ещё тут на всякий случай расшаренные папки но тоже без толку... И в гостевой ОС тоже сделал расшаренную папку, её видно в Сети при просмотре, доступ есть но опять же непонятно почему в remote-viewer не появляется возможность выбора папки для расшаривания?

    ОтветитьУдалить
    Ответы
    1. Надо отключить файрвол в госте и убедиться что запущена служба Spice WebDAV proxy что то там

      Удалить
  8. Александр, к тому же самому гостю с той же самой Windows 10, настроенной также как было описано вами 2 января смог сегодня подключиться с возможностью подключения расшаренной папки но! - подключение было сделано с машины где установлен Linux Mint 19.2 и virt-viewer опять же для Linux - выходит что все настройки ВМ правильны, чего-то такого не хватает в системе с Windows 10 откуда подключаюсь к ВМ - может требуется более младшая версия протокола SMB? Сборка Windows 10 последнего осеннего обновления, со всеми обновлениями месячной давности, тут принудительно должны быть отключены версии 1.0 и 2.0 протокола SMB, оставлена только 3.0.
    Сможете проверить на своей тестовой машине Windows 7 x64 pro будет ли всё также работать если запретить использовать версии 1.0 и 2.0 протокола SMB оставив только версию 3.0?

    ОтветитьУдалить
    Ответы
    1. Вообще то у них написано, что это пока экспериментальный функционал и работат только с линуксового клиента. Вы же писали что будете использовать тонкие клиенты - я и не подумал что с винды.

      Удалить
    2. Вот так поворот, оказывается эта функция только для клиента под Linux, а я этого и не заметил когда читал... но всё же моя радость оказалась недолгой: даже под Linux Mint хотя и возможно подключить и расшарить папку но реально в гостевой ВМ с Windows 10 при попытке доступа к ней происходит просто зависание и всё, хотя сама шара видна, в итоге у меня это по факту не заработало... А у вас как было практически, получалось получить в гостевой ОС доступ на эту расшаренную папку?

      Удалить
    3. У меня работает. Нужно чтоб виртуалка была полностью настроена и запущена, после этого я подключаюсь к ней виртвьювером, а уже после этого выбираю папку которой поделиться.
      В каждой сессии процедуру выбора папки необходимо повторять, после чего работа как с обычной сетевой папкой.

      Удалить