Remote Desktop Connection Manager (RDCMan) — это официальная утилита Microsoft для удобного подключения ко множеству серверов по протоколу RDP (утилита предназначена заменить устаревшую оснастку Remote Desktops), позволяющая существенно упростить жизнь системному администратору. В RDCMan 2.7 появилась довольно интересная функция – возможность прямого подключения к консоли любой виртуальной машины, запущенной на гипервизоре Hyper-V, с помощью VMConnect. Соединение устанавливается в режиме Enhanced Session Mode, который использует для подключения шину VMBus (логический канал связи между хостом Hyper-V и виртуальными машинами).
Чтобы подключится к конкретной виртуальной машине, необходимо получить ее идентификатор (VM ID). С помощью PowerShell идентификатор конкретной ВМ можно получить так:
Get-VM -Name lon-dc01 | select ID
После того, как вы узнали идентификатор виртуальной машины, откройте RDCMan и добавьте новый сервер. В свойствах сервера проверьте, что включена опция «VM console connect». Затем в поле Server name укажите имя Hyper-V сервера, на котором запущена виртуальная машина. В поле id укажите ее идентификатор, полученный на предыдущем шаге, и сохраните настройки.
Чтобы подключиться к виртуальной машине, вам нужно указать учетную запись пользователя с правами администратора Hyper-V.
Совет. Даже если ваша учетка состоит в локальной группе администраторов, ее нужно непосредственно включить в группу Hyper-V Administrators.
Теперь вы можете подключиться к консоли виртуальной машины, запущенной на Hyper-V, точно также, как вы подключаетесь к обычному серверу Windows. Важно отметить, что виртуальная машина, к которой осуществляется подключение, может находиться во внутренней изолированной Hyper-V сети, у нее в принципе может не быть сетевого адаптера, и подключение не зависит от того, разрешен ли к ней RDP доступ или нет.
Совет. На сервере Hyper-V должен разрешен доступ к порту TCP 2179.
New-NetFirewallRule -Name "Hyper-V REMOTE_DESKTOP_TCP_IN " -DisplayName "Hyper-V REMOTE_DESKTOP_TCP_IN Port 2179" -Description Inbound rule for Hyper-V to allow remote connection to the virtual machines over Network port TCP 2179. VMMS.exe listens traffic over network port 2179" -Group "Hyper-V" -Direction Inbound -Protocol TCP -LocalPort 2179 -Action Allow -Profile Public
В том случае, если вы хотите разрешить подключаться к консоли ВМ определенному пользователю (не являющемуся администратором), необходимо предоставить ему разрешения следующим образом:
Grant-VMConnectAccess -ComputerName hyper-srv-01 -VMName lon-srv-01 -UserName contoso\iaivanov2
В том случае, если при подключении к ВМ появляется ошибка «Unknown disconnection reason 3848», необходимо настроить ряд разрешений. Дело в том, что политика CredSSS (Credential Security Service Provider) на хосте Hyper-V по умолчанию не позволяет аутентифицировать удаленных пользователей.
Запустите консоль PowerShell с правами администратора и выполните следующие команды:
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentialsDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowDefaultCredentials -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentialsWhenNTLMOnlyDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowDefaultCredentialsDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentials -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowFreshCredentialsWhenNTLMOnly -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowSavedCredentialsWhenNTLMOnly -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowSavedCredentials -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults\AllowSavedCredentialsDomain -Name Hyper-V -PropertyType String -Value "Microsoft Virtual Console Service/*" -Force
Теперь попробуйте снова подключиться. Подключение должно успешно установится.
Таким образом, с помощью RDCMan, вы можете удаленно подключаться к консоли любой виртуальной машины, работающей на хосте Hyper-V, независимо от гостевой ОС, будь то Window, Linux, MacOs или что-то еще.
1 comment
Насчет того, что для Hyper-V коннектов используется Enhanced Session — полная чушь, там коннект к обычной (Basic) сессии.