
В этой статье мы рассмотрим несколько распространенных проблем, связанных с лицензированием RDS, когда клиенты RDP не могут подключиться к Windows Server с установленной ролью Remote Desktop Services Host.
Ошибки лицензирования при подключении клиентов RDP к хосту RDS могут возникать, если:
- Сервер лицензирования RDS, с которого вы хотите получить клиентские лицензии (RDS CALs), не указан в настройках служб удаленных рабочих столов;
- На сервере лицензирования RDS закончились доступные CAL;
- Клиент RDP пытается подключиться с просроченной временной лицензией RDS;
Удаленный сеанс был отключен, потому что для этого компьютера нет доступных лицензий клиентского доступа к удаленному рабочему столу
Сначала рассмотрим ошибку, связанную с получением клиентами RDS CALs с сервера лицензий.
Remote session was disconnected because there are no Remote Desktop client access licenses available for this computer. Please contact the server administrator.
Подключитесь к серверу RDSH в административном режиме (mstsc.exe /admin
) и запустите инструменты RD Licensing Diagnoser. Если все настроено правильно, вы должны увидеть имя сервера лицензирования RDS и тип лицензии (Per User/Per Device).
Подключитесь к серверу лицензий RDS с помощью консоли RD Licensing Manager (licmgr.exe
) и убедитесь, что у вас есть свободные лицензии нужного типа (Per User или Per Device). Если свободные RDS CAL закончились, необходимо приобрести новый пакет CAL, подождать, пока кто-то освободит лицензию, или отозвать неиспользованные лицензии непосредственно из консоли (щелкните правой кнопкой мыши компьютер/пользователя и выберите Отозвать лицензию).
В этом примере видно, что есть свободные RDS CALs, и они выдаются пользователям (Выдано = 44).
Скорее всего, в этом случае клиентский компьютер пытается подключиться к вашему RDSH-серверу с просроченной временной лицензией RDP (если ваш сервер лицензий RDS был недоступен в момент первого подключения клиента, клиенту была выдана временная лицензия RDP на 180 дней). В этом случае необходимо сбросить эту просроченную лицензию в реестре на клиентском устройстве.
Выполните следующие действия на клиентском компьютере (в данном примере — Windows 10):
- Запустите редактор реестра (
regedit.exe
); - Удалите ключ реестра HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing;
- Закройте редактор реестра и выполните команду
mstsc.exe
(Подключение к удаленному рабочему столу) от имени администратора; - Подключитесь к серверу RDS. В этом случае рег-ключ MSLicensing будет автоматически пересоздан, и компьютер получит новую лицензию RDP.
The remote computer disconnected the session because of an error in the licensing protocol. Please try connecting to the remote computer again or contact your server administrator.
Удаленный сеанс был прерван, поскольку нет доступных серверов лицензий удаленных рабочих столов для предоставления лицензии
Один из клиентов столкнулся с проблемой развернутой фермы RDS-серверов на Windows Server 2012 R2. По какой-то причине сервер RDS перестал выдавать терминальные лицензии пользователям, хотя роль сервера лицензий была установлена и настроена, а RDP CALs были активированы.
Когда пользователь пытается подключиться к терминальному серверу по RDP, появляется следующая ошибка:
The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license. Please contact the server administrator.
Подключитесь к консоли сервера в административном режиме (mstsc /admin
). Откройте диспетчер сервера и перейдите к настройкам RDS (Службы удаленных рабочих столов -> Обзор развертывания -> Задачи -> Редактирование свойств развертывания). Убедитесь, что в конфигурации RDSH указан правильный сервер лицензий Remote Desktop и тип RDS CAL (Per Device или Per User).
Также можно проверить настройки сервера лицензирования RDS с помощью PowerShell:
Get-RDLicenseConfiguration
Как видите, в конфигурации указан LicenseServer, а в поле PerUser используется тип лицензирования.
Убедитесь, что следующие порты не блокируются брандмауэрами при доступе с хоста RDSH на сервер RDS LicenseingServer: TCP 135, UDP 137, UDP 138, TCP 139, TCP 445, TCP 49152–65535 (RPC range)
. Если сервер лицензирования RDS недоступен, License Diagnoser выдаст ошибку:
License server rdslic_hostname is not available. This could be caused by network connectivity problems, the Remote Desktop Licensing service is stopped on the license server, or RD Licensing isn't available.
Сброс 120-дневного льготного периода RDS (L$RTMTIMEBOMB)
Внимательно посмотрите на события в Event Viewer на хосте RDS. Возможно, там есть ошибка, подобная этой:
EventID: 1128 Source: TerminalServices-RemoteConnectionManagerThe RD Licensing grace period has expired and the service has not registered with a license server with installed licenses. A RD Licensing server is required for continuous operation. A Remote Desktop Session Host server can operate without a license server for 120 days after initial start up.
RD License Diagnoser, скорее всего, также выдаст ошибку:
The grace period for the Remote Desktop Session Host server has expired, but the RD Session Host server hasn't been configured with any license servers. Connections to the RD Session Host server will be denied unless a license server is configured for the RD Session Host server.
Это означает, что льготный период для сервера RDSH истек, и вам необходимо продлить льготный режим или активировать хост на сервере лицензий RDS.
Licensing mode for the Remote Desktop Session Host is not configured. Remote Desktop Service will stop working in 86 days.
Количество дней до окончания льготного периода RDS можно узнать из поднятой командной строки:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays
Обратите внимание, что DaysLeft = 0
. Это означает, что на этом хосте RDSH истек льготный период.
Чтобы продлить льготный период в RDS, необходимо удалить параметр реестра на сервере, который определяет время лицензирования льготного периода. Дата, определяющая льготный период RDS для сервера, хранится в параметре реестра reg_binary L$RTMTIMEBOMB (довольно забавное название -TIME BOMB….), расположенный в следующем ключе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
Необходимо удалить параметр L$RTMTIMEBOMB из реестра. Однако администратор не обладает достаточными правами для этого.
Unable to delete all specified values.
Чтобы удалить этот параметр реестра, нужно открыть разрешения родительского ключа и предоставить своей учетной записи привилегии владельца ключа. Затем установите разрешения Full Control для группы Administrators (я не буду подробно описывать этот процесс).
Теперь щелкните правой кнопкой мыши параметр L$RTMTIMEBOMB и удалите его.
Перезапустите сервер RDSH и подключитесь к нему с помощью клиента RDP. Убедитесь, что RDS CAL был успешно выпущен с помощью диспетчера лицензирования удаленных рабочих столов.
Если RDS CAL не получена, проверьте наличие события в средстве просмотра событий:
Event ID: 1130 Source: TerminalServices-RemoteConnectionManager The Remote Desktop Session Host server does not have a Remote Desktop license server specified. To specify a license server for the Remote Desktop Session Host server, use the Remote Desktop Session Host Configuration tool.
С помощью этой команды PowerShell проверьте, установлен ли сервер лицензирования RDS:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()
Как видно, сервер лицензирования RDS не установлен (SpecifiedLSList пуст). Принудительно установите сервер лицензирования RD с помощью следующей команды:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.SetSpecifiedLicenseServerList("lon-rdslic.woshub.com")
- Использовать указанные серверы лицензий Remote Desktop
- Установите режим удаленного лицензирования
Теперь хост RDS сможет получать лицензии с сервера лицензирования RDS и выдавать их пользователям RDP.