Расширенный сеанс Hyper-V
Расширенный сеанс Hyper-V или как его еще называют английские товарищи Enhanced Session Mode. В большинстве случаев для управления виртуальными машинами мы используем средства удаленного доступа. В Windows – это RDP, Powershell, MMC и т.д., в Linux – SSH. Бывают ситуации в которых нельзя, или крайне нежелательно открывать удаленный доступ к виртуальной машине. Например сервера доступные из интернета. Виртуальные машины с другой подсетью, либо защищенные.
Причины могут быть разные. Решение почти всегда одно – подключиться с помощью Диспетчера Hyper-V. Используя прямое подключение к виртуальной машине можно, например, выключить её “жестко” по питанию. Зайти без настройки каких-либо средств удаленного администрирования на самой виртуальной машине.
Используя расширенный сеанс Hyper-V Enhanced Session Mode у нас появляется возможность взаимодействовать с виртуальной машиной по RDP. Т.е. нет необходимости настраивать консоль управления виртуальными машинами. Перечислим основные преимущества ESM.
- поддержка большого разрешения экрана
- общий буфер обмена
- общий доступ к файлам и папкам с возможностью использования перетаскивания (Drag&Drop)
- доступ к локальным USB-устройствам (мультимедиа, внешние диски, флешки, принтеры и т.п.)
- использование смарт-карт и прочих plug-and-play устройств
Вообще говоря, использовать RDP протокол для подключения к виртуальной машине отличная идея. Трансляция рабочего стола значительно быстрее, чем при подключении из Hyper-V Manager. Понять что расширенный сеанс Hyper-V включен можно взглянув на значок с изображением мониторов.
Нажав на данную кнопочку можно изменить режим подключения к виртуальной машине с базового на расширенный. Если ESM не активен на сервере, давайте его включим.
Включение Enhanced Session Mode
Включить использование ESM на сервере Hyper-V можно через Powershell либо Диспетчер Hyper-V. Рассмотрим оба варианта.
Включение Enhanced Session Mode из Powershell
Set-VMHost -EnableEnhancedSessionMode $True -Passthru
Данный командлет необходимо выполнить на сервере Hyper-V. После его выполнения расширенный режим Hyper-V будет включен по умолчанию.
Включение Enhanced Session Mode из Диспетчера Hyper-V
В запущенном Диспетчер Hyper-V выбираем необходимый сервер, затем Параметры Hyper-V. Находим Политика режима расширенного сеанса. Ставим галочку Разрешить режим расширенного сеанса.
Расширенный сеанс Hyper-V работает не на всех клиентах. Минимально необходимые требования Microsoft указывает такие:
- Windows Server 2012 R2 и выше
- Windows 8.1 и выше
- Remote Desktop Services включен и запущен
- Виртуальная машина второй генерации (generation 2)
Также есть возможность использовать расширенный сеанс Hyper-V на некоторых дистрибутивах Linux. Далее в статье мы рассмотрим процесс настройки ESM на ОС Ubuntu. Для работы расширенного режима при соблюдении указанных мер рекомендую установить все обновления. Только после этого можно надеяться на стабильную работу.
Подключение к виртуальной машине
Рассмотрим два варианта подключения к виртуальной машине не Hyper-V сервере. Первый вариант с использованием Диспетчер Hyper-V, второй вариант при помощи RDP.
Подключение к ВМ из Диспетчера Hyper-V
Запустим оснастку Диспетчер Hyper-V и подключимся к нужной виртуальной машине. При подключении откроется окошко с настройками разрешения экрана.
Данное окно будет открывать каждый раз при подключении если не нажать галочку Сохранить параметры для подключения к этой вирт. машине. Перейдя во вкладку Локальные ресурсы можно выбрать какие локальные устройства подключать к данной виртуальной машине.
В параметрах звука можно выбрать что именно пробрасывать на ВМ (микрофон, колонки)
В локальных устройствах и ресурсах можно выбрать проброс дисков с локальной машины, и прочих Plug&Play устройств.
Единожды выбрав настройки проброса устройств можно сохранить их и далее при открытии окна ВМ они будут подключаться автоматически. Файл с сохраненными настройками будет находиться по пути:
%appdata%\Microsoft\Windows\Hyper-V\Client.0
Для каждой ВМ настройки сохраняются в файле формата: vmconnect.rdp.{GUID виртуальной машины}.config
Подключение к ВМ по RDP
Настройка первоначального подключения к виртуальной машине по RDP чуть сложнее чем из диспетчера Hyper-V. Создадим файл RDP подключения и назовем его wm.rdp и добавим следующие строки
full address:s:whs19
pcb:s:94471c5d-4d66-416a-a9b2-b80e3a2bfd21
server port:i:2179
negotiate security layer:i:0
- full address:s: – имя Hyper-V сервера. У меня это whs19
- pcb:s: – идентификатор виртуальной машины. В моем случае: 94471c5d-4d66-416a-a9b2-b80e3a2bfd21
- server port:i: – порт используемый для подключения 2179 должен быть открыт в брендмауере. Его не меняем.
Указываете свои данные и сохраняете файл.
Узнать идентификатор ВМ можно так
Get-Vm|select VMname, VMid
Готово. Можно использовать данный файл для подключения по RDP из любого места где есть доступ к серверу.
Расширенный сеанс Hyper-V на Linux
Официально Microsoft не заявляет о поддержке расширенного сеанса на Linux. Но есть пакеты настройки позволяющие включить данный режим на некоторых ОС. Настройку буду делать на Ubuntu 20.04, работать должно и на более ранних версиях. Обязательное требование: виртуальная машина должна быть второй генерации (generation 2).
Устанавливаем виртуальную машину, в настройках ставим generation 2
После создания виртуальной машины с Ubuntu заходим Параметры -> Безопасность и снимаем галочку Включить безопасную загрузку
При установке операционной системы необходимо выбрать Require my password to Log in. Если выбрать вход без пароля расширенный режим Hyper-V работать не будет.
После окончания установки поставьте все последние обновления на операционную систему. Приступим к установке необходимого софта. Запустим терминал и скачаем файл установки в домашнюю директорию пользователя.
wget https://raw.githubusercontent.com/Microsoft/linux-vm-tools/master/ubuntu/18.04/install.sh
Установим права на запуск для скачанного скрипта
sudo chmod +x install.sh
Запустим скрипт install.sh
sudo ./install.sh
Перезагрузим компьютер
sudo reboot
Повторно запустим скрипт install.sh
sudo ./install.sh
Если по окончанию работы скрипта у вас вылезла ошибка также как у меня
Необходимо вручную изменить настройки в файле /etc/xrdp/xrdp.ini
sudo nano /etc/xrdp/xrdp.ini
Меняем настройки на указанные ниже
port=vsock://-1:3389
use_vsock=false
Сохраняем и выключаем виртуальную машину. Если указанной выше ошибки нет, все равно рекомендую проверить указанные параметры.
Заходим на сервер Hyper-V и выполняем командлет
Set-VM -VMName ubuntu -EnhancedSessionTransportType HvSocket
где ubuntu – название виртуальной машины на Hyper-V сервере
Включаем виртуальную машину. После подключения к ней появится окошко выбора разрешения. Верный знак что расширенный режим включен.
Раскрыв меню Показать параметры можно выбрать что подключить при входе (диск, флеш, буфер и т.п.).
При полной загрузке машины появится окно входа в систему от xrdp. Вводим свой логин и пароль. Если все настроено верно, откроется рабочий стол.
Пример настройки можно посмотреть на видео
С использованием расширенного режима Hyper-V работать с Linux намного удобнее. Полноценный буфер обмена, подключение жестких дисков, флеш и прочих устройств.
Спасибо за внимание, до новых встреч.
Исправляем черный экран.
sudo nano /etc/xrdp/startwm.sh
Внесите изменения в файле startwm.sh:
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
А для Alt Linux возможно включить расширенный режим?
Для Alt я настроек не встречал
На AstraLinux Orel завел.
На AstraLinux Orel завел, правда в ручную все файлы поправил.
Если не сложно опишите что изменяли. Это может помочь кому-то еще
После авторизации в xrdp ubuntu 20.04.1 не грузится, остается голубой экран. В базовый режим переходит и работает нормально.
Как исправить?
В конце статьи есть описание что делать если будет черный экран, попробуйте, возможно ваш вариант
не работает . фффффффффффффффф топку
как побороть эту историю
Windows server 2016