В этой статье мы рассмотрим несколько распространенных ошибок, связанных с RDS лицензированием, когда RDP удаленные клиенты не могут подключится к терминальным серверам Windows Server с ролью Remote Desktop Services Host.
Ошибки лицензирования при подключении RDP клиентов к RDS хосту могут появляться, если:
- На хосте Remote Desktop Services не указан сервер RDS лицензирования, с которого нужно получить клиентские лицензии (RDS CAL);
- На сервере RDS Licensing закончились доступные клиентские лицензии;
- Клиент пытается подключиться с истекшей временной RDS лицензией;
- Удаленный сеанс отключен, поскольку для данного компьютера отсутствуют клиентские лицензии удаленного рабочего стола
- Удаленный сеанс отключен, поскольку отсутствуют доступные серверы лицензирования удаленных рабочих столов, которые могли бы провести лицензирование
- RDS Licensing Grace Period Has Expired (L$RTMTIMEBOMB)
Удаленный сеанс отключен, поскольку для данного компьютера отсутствуют клиентские лицензии удаленного рабочего стола
Сначала рассмотрим ошибку, связанную с получением клиентами лицензий (RDS CAL) с сервера лицензирования.
Remote session was disconnected because there are no Remote Desktop client access licenses available for this computer
Удаленный сеанс отключен, поскольку для данного компьютера отсутствуют клиентские лицензии удаленного рабочего стола
В первую очередь вам нужно подключиться к RDSH серверу в административном режиме (
mstsc.exe /admin
) и запустить утилиту RD Licensing Diagnoser. Если у вас все настроено правильно, вы должны увидеть имя сервера лицензирования RDS, и тип лицензии (Per User/Per Device).
С помощью консоли RD Licensing Manager (
licmgr.exe
) подключитесь к серверу RDS лицензий и проверьте, что в вам доступны свободные лицензии нужного типа (Per User/Per Device). Если свободные лицензии закончились, нужно приобрести новый пакет CAL, дождаться пока кто-нибудь освободит лицензию или отозвать неиспользуемые лицензии прямо из консоли (Revoke License).
В данном примере видно, что RDS CAL есть, и они выдаются пользователям (Issued = 44).
Скорее всего в этом случае клиентский компьютер пытается подключиться к вашему RDSH серверу со временной RDP лицензией с истекшим сроком (если при первом подключении клиента ваш RDS Licensing сервер был недоступен, клиенту была выдана временная лицензия на 180 дней). В этом случае нужно на клиенте сбросить эту просроченную лицензию в реестре.
На клиентском компьютере (в этом примере Windows 10), выполните следующее:
- Запустите редактор реестра
regedit.exe
; - Удалите ветку реестра HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing;
- Закройте редактор реестра и запустите mstsc.exe (Remote Desktop Connection) с правами администратора;
- Потом подключитесь к вашему RDS серверу. При этом ветка MSLicensing автоматически пересоздастся, и компьютер получит новую лицензию.
mstsc.exe
с правами администратора, то при любом 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.
Удаленный сеанс отключен, поскольку отсутствуют доступные серверы лицензирования удаленных рабочих столов, которые могли бы провести лицензирование
У одного из заказчиков появилась другая проблема с фермой терминальных серверов Remote Desktop Services на базе. По какой-то причине RDS сервер перестал выдавать терминальные лицензии пользователям, хотя роль сервера лицензий RDS установлена и настроена, а RDP CAL активированы.
Когда пользователь пытается подключится к терминальному серверу по RDP, появляется ошибка:
The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license. Please contact the server administrator.
В русской версии Windows ошибка выглядит так:
Удаленный сеанс отключен, поскольку отсутствуют доступные серверы лицензирования удаленных рабочих столов, которые могли бы провести лицензирование.
Подключитесь к консоли сервера в административном режиме (
mstsc /admin
). Запустите Server Manager, откройте настройки RDS (Remote Desktop Services -> Deployment Overview -> Tasks -> Edit Deployment Properties ) и проверьте что в конфигурации RDSH указан правильный сервер лицензирования (Remote Desktop License Server) и тип 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 сервер не доступен, в окне 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.
RDS Licensing Grace Period Has Expired (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 сервера (grace) истек, и вам нужно продлить grace режим, либо активировать хост на полноценном сервере лицензий RDS.
Licensing mode for the Remote Desktop Session Host is not configured. Remote Desktop Service will stop working in 94 days.
Количество дней до окончания RDS Grace Period можно узнать из
cmd.exe
с правами администратора командой:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays
Обратите внимание, что
DaysLeft = 0
. Это означает, что на RDSH хосте истек Grace Period.
Чтобы продлить grace период в RDS нужно на сервере удалить параметр реестра, в котором задается время отсчета льготного периода лицензирования (grace period licensing). Дата, определяющая время окончания работы RDSH в режиме grace хранится в reg_binary параметре реестра L$RTMTIMEBOMB (довольно забавное имя –TIME BOMB …. ;), находящемся в ветке:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
Вам нужно удалить из реестра параметр L$RTMTIMEBOMB. Однако, у администратора недостаточно прав для этого.
Unable to delete all specified values.
Чтобы удалить этот параметр реестра, нужно открыть разрешения родительской ветки и предоставить своей учетной записи права владельца на ветку. Затем дайте себе права RW на ветку (не буду подробно описывать сам процесс).
Теперь щелкните правой кнопкой по параметру L$RTMTIMEBOMB и удалите его.
Перезагрузите RDSH сервер и подключитесь к нему с клиента по RDP.
С помощь консоли Remote Desktop Licensing Manager проверьте, что 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
пуст). Следующая команда принудительно задаст адрес сервера лицензий RDS.
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.SetSpecifiedLicenseServerList("msk-rdslic.winitpro.ru")
- Use the specified Remote Desktop license servers
- Set the Remote licensing mode
Теперь RDS хост сможет получать лицензии от сервера RDS Licensing и выдавать их вашим RDP пользователям.
>> «msk-rdslic.winitpro.ru» — удалили бы из описания команды тогда, если на скриншоте замазали
Это данные несуществующего сервера для примера. Данные из реальной инфраструктуры скрыты.
А можно не танцевать с бубном и указать в локальной политике хоста сесии сервер лицензий
Конфигурация компьютера-Административные шаблоны-Компаненты Windows-Служба удалённых рабочих столов-Узел сеансов рабочих столов-Лицензирование-Использовать указанные серверы лицензирования удаленных рабочих столов
Согласен, задать сервер лицензий через GPO несколько проще.
все сделал как по инструкции
в PowerShell Сервер лицензирования показывает
но лицензии не обновляются что делать?
помогите пожалуйста осталось 2 дня до окончания лицензии
HELP!!!SOS!!!
Может быть проблема в чем-то другом? Ваша ситуация точно аналогична описанной (коды ошибок и другие состояния)? Не забыли перезагрузить сервера RDS?
Спасибо! Просто удалил запись в реестре с изменением прав доступа и 120 дней возобновилось. Windows Server 2012 R2
Здравствуйте. При попытке подключения к серверу такая же ошибка, но только с одной рабочей станции, с других пользователи подключаются. На сервере Windows Server 2008 R2 Standart. На сервере у меня нет админских прав, то есть в реестре удались ключ не могу. И режим лицензирования стоит Per Device. Если с других станций подключения идут, поможет ли удаление указанного вами ключа? Так как удалить я не могу, надо будет напрягать админа, хотелось бы быть уверенным, что поможет удаление
Для начала попробуйте на своем клиентском компьютере сбросить выданную RDP лицензию. Инструкция здесь: https://winitpro.ru/index.php/2011/12/22/oshibka-the-remote-computer-disconnected-the-session-because-of-an-error-in-the-licensing-protocol/
Но нужны права админа.
Спасибо. я пробовал немного в другой последовательности: 1) удалял ветку MSLicensing. ) чистил кэш DNS. 3) запускал Remote Desktop Connection, на этом этапе ошибка повторялась.
Попробую сделать перезагрузку и только потом подключиться по РДП к серверу. Права админа есть
После вышеописанного все конечно работает, но GracePeriod снова начинает тикать, и получается что через 120 дней нужно будет опять удалять ключ реестра.
Есть ли какие то варианты, чтобы остановить обратный отсчёт?
Сервер лицензирования у вас настроен и активированы соотвествующие RDS CAL? Потры до него не блокируются на файерволе.
+1
Благодарю! Очень помогла статья. Сервер лицензирования был настроен, а пользователи юзали временные лицензии и в день X работа встала.
От всей души братиш! Помогло, спасибо!
Спасибо за статью. Есть ли возможность увеличить GracePeriod?
см. инфу про RTMTIMEBOMB. При его очистке graceperiod сбрасывается до 120 дней
А можно ли в реестре параметра раньше удалить, допустим на 110 день? Или только после 120 дня можно?
Можно удалять в любое время. Я в итоге так не справился с проблемой — 4-й год просто удаляю когда дней 10-20 до конца остаётся. При перезагрузке счетчик сбрасывает снова на 120 дней.
И еще есть нюанс — если вы удалили ключ, но после этого не зашли удаленным пользователем, именно через RemoteDesktop — то он так и будет на нуле. Это, например, на резервном сервере.
А вот на втором новом серваке этот счетчик почему то на нуле. Сервер неделю еще не работает, может потом появится. На другом спасибо сбросил, отсчет назад пошел
Немного не по теме. Есть Server 2012 и есть телефон на андроиде и приложение «Клиент удалённого рабочего стола». После ремонта телефона (замена системной платы) при попытке подключиться к удалённому рабочему столу заканчивается сообщением «не удалось подключиться к удалённому рабочему столу так лицензия для данного устройства недействительна». Ни где удалить на сервере лицензию для этого устройства, ни очистить передаваемые сведения с клиента не могу найти.
А что делать когда есть права Админа, но не дает возможности дать полный доступ на ветку GracePeriod?
Скорее всего придется сделать себя владельцев ветки. Сейчастам наверно trusted installer