Нет серверов лицензирования удалённых рабочих столов — решение

нет серверов лицензирования удалённых рабочих столов keytrust24.store

Утро понедельника. 40 сотрудников пытаются подключиться к терминальному серверу, и каждый получает одно и то же: «Удалённый сеанс отключён, так как для этого компьютера отсутствуют серверы лицензирования удалённых рабочих столов». Работа стоит, телефон разрывается, а вы судорожно гуглите решение. Знакомо? Сейчас разберём, почему нет серверов лицензирования удалённых рабочих столов и что с этим делать.

Ошибка типичная для Windows Server 2016, 2019, 2022 и свежего 2025. Причины разные, но все сводятся к одному: Session Host не может получить клиентскую лицензию RDS CAL от Licensing Server.

Главное

  • Ошибка «нет серверов лицензирования удалённых рабочих столов» возникает, когда Session Host не может связаться с RD Licensing Server или grace period (120 дней) истёк
  • Решение зависит от причины: установка роли RD Licensing, настройка групповой политики, добавление RDS CAL или открытие порта 135/TCP
  • Grace period можно сбросить через удаление ключа реестра GracePeriod, но это крайняя мера — правильный путь: настроить лицензирование
  • Проверка текущего состояния занимает 5 минут через PowerShell

Почему появляется ошибка «нет серверов лицензирования удалённых рабочих столов»

Разберём по пунктам. Шесть основных причин, каждая со своим решением.

Первая — роль RD Licensing вообще не установлена на сервере. Бывает так: администратор развернул роль RD Session Host, подключил пользователей, всё работало 120 дней. А потом — бах. Grace period закончился, и сервер начал отклонять подключения. Почему 120 дней? Потому что Microsoft даёт этот срок на настройку лицензирования. Думали, что всё настроено? Нет.

Вторая — сервер лицензирования установлен, но Session Host о нём не знает. Нужно явно указать адрес Licensing Server через групповую политику или реестр. Автоматического обнаружения, вопреки ожиданиям, в большинстве конфигураций не происходит.

Третья — файрвол блокирует порт 135/TCP (RPC) между Session Host и Licensing Server. Или блокирует динамические порты RPC (49152-65535).

Четвёртая — RDS CAL лицензии не установлены на сервере лицензирования. Роль стоит, политика настроена, а лицензий ноль.

Пятая — лицензии есть, но закончились. Купили 20 Per User CAL, а подключается 25 человек.

Шестая — несовместимость версий. RDS CAL 2019 не годятся для Windows Server 2022. Нужны CAL той же или более новой версии.

Диагностика: определяем причину за 5 минут

Прежде чем чинить, надо понять, что именно сломалось. Откройте PowerShell от имени администратора на Session Host и выполните следующие команды.

# Проверяем, какой режим лицензирования настроен (Per User / Per Device)
Get-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" -Name LicensingMode -ErrorAction SilentlyContinue

# Смотрим, указан ли сервер лицензирования
Get-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" -Name LicenseServers -ErrorAction SilentlyContinue

# Проверяем grace period - если значение есть, вы всё ещё в пробном режиме
$GracePeriod = (Invoke-WmiMethod -Path "Win32_TerminalServiceSetting" -Name GetGracePeriodDays).DaysLeft
Write-Host "Осталось дней grace period: $GracePeriod"

# Проверяем доступность сервера лицензирования
Test-NetConnection -ComputerName LICENSE-SERVER -Port 135

Что говорят результаты? Если LicenseServers пустой — причина номер два. Если grace period показывает 0 — срок истёк. Если Test-NetConnection возвращает TcpTestSucceeded: False — проблема с сетью или файрволом.

На самом сервере лицензирования проверяем состояние CAL:

# Количество установленных и выданных лицензий
Get-WmiObject Win32_TSIssuedLicense | Group-Object LicenseStatus | Select-Object Name, Count

# Детальная информация о лицензиях
Get-WmiObject Win32_TSLicenseKeyPack | Select-Object KeyPackType, ProductVersion, TotalLicenses, IssuedLicenses, AvailableLicenses | Format-Table

Шаг 1: установка роли RD Licensing

Если роль не установлена — начинаем с неё. Два варианта: через Server Manager или PowerShell.

Через PowerShell быстрее:

# Установка роли RD Licensing и средств управления
Install-WindowsFeature RDS-Licensing -IncludeManagementTools

# Проверяем, что роль установлена
Get-WindowsFeature RDS-Licensing

Через Server Manager: Add Roles and Features — Remote Desktop Services — Remote Desktop Licensing. Перезагрузка не требуется.

После установки роли нужно активировать сервер лицензирования. Откройте Remote Desktop Licensing Manager (licmgr.exe), правой кнопкой по серверу — Activate Server. Выберите метод активации: Automatic (через интернет), Web Browser или Telephone. Для серверов с доступом в интернет — автоматический метод, занимает минуту.

Проверенная конфигурация: Windows Server 2022 Standard, роль RD Licensing на том же сервере, что и Session Host. Для малых компаний (до 50 пользователей) совмещение ролей на одном сервере работает без проблем.

Шаг 2: настройка групповой политики для серверов лицензирования RDS

Роль установлена. Теперь Session Host должен знать, куда обращаться за лицензиями. Делается это через групповую политику.

Откройте gpedit.msc (локальная политика) или создайте GPO в домене. Путь следующий:

Computer Configuration — Administrative Templates — Remote Desktop Services — Remote Desktop Session Host — Licensing

Тут две ключевые политики:

Use the specified Remote Desktop license servers — включаем, указываем FQDN или IP-адрес сервера лицензирования. Можно несколько через запятую для отказоустойчивости.

Set the Remote Desktop licensing mode — включаем, выбираем Per User или Per Device. Режим должен совпадать с типом купленных RDS CAL. Указали Per User, а купили Per Device? Работать не будет.

После применения политики выполните на Session Host:

# Принудительное обновление групповых политик
gpupdate /force

# Проверяем, что политика применилась
Get-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" | Select-Object LicensingMode, LicenseServers

Можно ли обойтись без групповой политики? Да. Те же параметры задаются напрямую через реестр:

# Указываем сервер лицензирования через реестр
Set-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" -Name "LicenseServers" -Value "rds-lic.domain.local"

# Задаём режим лицензирования (4 = Per User, 2 = Per Device)
Set-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" -Name "LicensingMode" -Value 4

Шаг 3: установка RDS CAL лицензий

Сервер лицензирования активирован, Session Host на него указывает. Осталось добавить сами лицензии.

В Remote Desktop Licensing Manager (licmgr.exe) правой кнопкой по серверу — Install Licenses. Вводите номер соглашения или ключ лицензии. Процесс занимает пару минут.

Где взять RDS CAL? На keytrust24.store можно купить лицензии для Windows Server 2019 и 2022 по выгодной цене. Подробнее о типах лицензий читайте в статье RDS CAL лицензирование.

После установки лицензий проверяем:

# Смотрим доступные лицензии на Licensing Server
Get-WmiObject Win32_TSLicenseKeyPack | Where-Object {$_.TotalLicenses -gt 0} | Format-Table ProductVersion, TypeAndModel, TotalLicenses, IssuedLicenses, AvailableLicenses

Сколько лицензий нужно? Ровно столько, сколько у вас пользователей (Per User) или устройств (Per Device). Подробнее о расчёте — в материале про Windows Server CAL лицензирование.

Файрвол и сетевые проблемы

Всё настроено, лицензии добавлены, а ошибка не уходит? Вероятно, дело в сети.

RD Licensing использует RPC (Remote Procedure Call). Для работы нужны:

  • Порт 135/TCP — RPC Endpoint Mapper
  • Динамические порты RPC: 49152-65535/TCP

Проверяем доступность с Session Host:

# Проверяем порт 135
Test-NetConnection -ComputerName LICENSE-SERVER -Port 135

# Если порт закрыт - создаём правило на файрволе Licensing Server
New-NetFirewallRule -DisplayName "RDS Licensing RPC" -Direction Inbound -Protocol TCP -LocalPort 135 -Action Allow

# Для динамических портов RPC
New-NetFirewallRule -DisplayName "RDS Licensing RPC Dynamic" -Direction Inbound -Protocol TCP -LocalPort 49152-65535 -Action Allow

Между площадками связь через VPN? Убедитесь, что VPN-туннель пропускает RPC-трафик. Встречается ситуация: серверы в одной подсети — всё работает, перенесли Licensing Server в другой VLAN — подключения посыпались.

Сброс grace period: крайняя мера

Допустим, grace period истёк, пользователи не могут подключиться, а настройка лицензирования требует времени. Есть экстренный вариант — сброс пробного периода через реестр. Это не замена нормальному лицензированию, а временная мера.

Ключ реестра: HKLMSYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod

По умолчанию удалить этот ключ нельзя даже от имени администратора. Нужны права SYSTEM. Два способа получить их:

# Способ 1: через PsExec (скачать с Sysinternals)
psexec -s regedit

# В открывшемся regedit перейдите к:
# HKLMSYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod
# Удалите ключ GracePeriod (не значение внутри, а весь раздел)

# Способ 2: через PowerShell - изменить права на ключ
$regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod", [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree, [System.Security.AccessControl.RegistryRights]::ChangePermissions)
$acl = $regKey.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule("Administrators", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$regKey.SetAccessControl($acl)
$regKey.Close()

# После изменения прав удаляем ключ
Remove-Item "HKLM:SYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod" -Force

После удаления перезагрузите службу Remote Desktop Services или сам сервер. Grace period начнётся заново — ещё 120 дней. Но. Если за эти 120 дней не настроить лицензирование нормально, ситуация повторится.

Microsoft официально документирует требования к RDS CAL. Использование сброса grace period вместо покупки лицензий нарушает лицензионное соглашение.

Проверка после сброса и настройки

Настроили всё по шагам. Как убедиться, что работает?

# На Session Host: полная диагностика лицензирования
$obj = Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace rootcimv2TerminalServices
$obj | Select-Object LicensingType, LicensingName, LicenseServerList

# Проверяем статус подключения к серверу лицензирования
$diag = Invoke-WmiMethod -Path "Win32_TerminalServiceSetting" -Name FindLicenseServers -Namespace rootcimv2TerminalServices
$diag

# Тест подключения RDP с другой машины
mstsc /v:SESSION-HOST-NAME

Ожидаемый результат: LicensingType показывает 4 (Per User) или 2 (Per Device), LicenseServerList содержит адрес вашего Licensing Server, подключение проходит без ошибок.

Если подключение всё равно не работает — проверьте Event Viewer на Session Host. Раздел: Applications and Services Logs — Microsoft — Windows — TerminalServices-Licensing. Там будут конкретные коды ошибок с описанием.

Типичные сценарии из практики

За годы работы с терминальными серверами накопились характерные случаи. Вот самые частые.

Сценарий: миграция на новый сервер. Старый Licensing Server выведен из эксплуатации, новый развёрнут, а Session Host по-прежнему ищет старый. Решение: обновить групповую политику, указав FQDN нового сервера. Не забыть переактивировать лицензии на новом сервере.

Сценарий: обновление Windows Server 2019 до 2022. Сервер обновили, а RDS CAL остались от версии 2019. CAL 2019 не работают с Server 2022. Нужно приобрести новые лицензии для Windows Server 2022 или докупить RDS CAL 2022.

Сценарий: два Session Host, один Licensing Server. Оба Session Host должны указывать на один и тот же Licensing Server. Частая ошибка: один хост настроен правильно, второй — нет. Проверяйте политику на каждом хосте отдельно.

Сценарий: Licensing Server в другом домене. По умолчанию RD Licensing выдаёт лицензии только компьютерам своего домена. Для кросс-доменного сценария нужно добавить сервер лицензирования в группу Terminal Server License Servers на контроллере домена целевого домена. Подробнее о доменных настройках — в статье про настройку терминального сервера.

Мониторинг и профилактика: не ждите, пока лицензии закончатся

Проактивный подход экономит нервы. Настройте мониторинг количества свободных RDS CAL.

# Скрипт мониторинга - запускать по расписанию через Task Scheduler
$keyPacks = Get-WmiObject Win32_TSLicenseKeyPack -ComputerName LICENSE-SERVER | Where-Object {$_.TotalLicenses -gt 0}

foreach ($pack in $keyPacks) {
    $percentUsed = [math]::Round(($pack.IssuedLicenses / $pack.TotalLicenses) * 100, 1)
    Write-Host "$($pack.ProductVersion) - $($pack.TypeAndModel): $($pack.AvailableLicenses) свободных из $($pack.TotalLicenses) ($percentUsed% использовано)"

    if ($pack.AvailableLicenses -le 5) {
        # Отправить уведомление администратору
        Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "RDS CAL: осталось мало лицензий" -Body "Свободных лицензий: $($pack.AvailableLicenses)" -SmtpServer "smtp.domain.local"
    }
}

Порог в 5 свободных лицензий — ориентир. Для компании с быстрым ростом штата поставьте 10-15. Главное — не узнать о нехватке от разъярённых пользователей утром понедельника.

Согласно документации Microsoft по планированию RDS, рекомендуется иметь резервный Licensing Server для отказоустойчивости. Session Host может быть настроен на два и более серверов лицензирования.

Дополнительные рекомендации по RDP

Решили проблему с лицензированием? Отлично. Несколько советов, чтобы она не вернулась.

Документируйте конфигурацию. Запишите: какой сервер выступает Licensing Server, какой режим лицензирования (Per User/Per Device), сколько лицензий куплено, когда куплены, серийные номера. При смене администратора эта информация бесценна.

Настройте RDP на Windows Server правильно с самого начала. Смените порт по умолчанию (3389) на нестандартный, настройте NLA (Network Level Authentication), ограничьте подключения по IP через файрвол.

Для тестовых сред используйте пробную версию Windows Server 2022 с 120-дневным grace period. Но в продакшене? Только лицензированная конфигурация.

Проверьте совместимость RDS CAL с версией сервера на странице совместимости версий Microsoft. Правило простое: CAL должны быть той же или более новой версии, чем сервер.

Хотите купить RDS CAL или Windows Server лицензии? В каталоге keytrust24.store есть всё необходимое для терминального сервера: серверные лицензии, CAL для пользователей и устройств, с моментальной доставкой ключа на email после оплаты.

Часто задаваемые вопросы

Что значит ошибка «нет серверов лицензирования удалённых рабочих столов»?

Ошибка означает, что сервер RD Session Host не может связаться с RD Licensing Server для получения клиентской лицензии RDS CAL. Причиной может быть отсутствие роли лицензирования, неправильная групповая политика, истечение grace period или сетевые проблемы.

Сколько длится grace period для RDS без лицензии?

Grace period составляет 120 дней с момента первого подключения клиента к Session Host. В течение этого срока RDS работает без настроенного сервера лицензирования. После истечения 120 дней новые подключения блокируются.

Можно ли сбросить grace period RDS?

Технически да — удалением ключа реестра HKLMSYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod с правами SYSTEM. Однако это временная мера и нарушение лицензионного соглашения Microsoft. Правильное решение — установить и настроить RD Licensing Server с действующими RDS CAL.

RDS CAL Per User или Per Device — что выбрать?

Per User — если сотрудники подключаются с нескольких устройств (ноутбук, ПК, планшет). Per Device — если несколько пользователей работают посменно на одном компьютере или тонком клиенте. Для удалёнщиков, как правило, Per User выгоднее.

Какие порты нужны для RD Licensing?

Порт 135/TCP (RPC Endpoint Mapper) и динамические порты RPC (49152-65535/TCP). Оба должны быть открыты между Session Host и Licensing Server. Если серверы в разных подсетях или VLAN, проверьте правила файрвола на промежуточных устройствах.

RDS CAL 2019 подходят для Windows Server 2022?

Нет. RDS CAL должны быть той же или более новой версии, чем операционная система сервера. Для Windows Server 2022 нужны RDS CAL 2022. CAL 2022 при этом подходят и для более ранних версий сервера — 2019, 2016.

Как узнать, сколько RDS CAL осталось свободных?

На Licensing Server выполните PowerShell-команду: Get-WmiObject Win32_TSLicenseKeyPack | Select TotalLicenses, IssuedLicenses, AvailableLicenses. Или откройте Remote Desktop Licensing Manager (licmgr.exe) — там отображается количество выданных и доступных лицензий по каждому пакету.

Частые вопросы

Проверка после сброса и настройки

Настроили всё по шагам. Как убедиться, что работает?

Типичные сценарии из практики

За годы работы с терминальными серверами накопились характерные случаи. Вот самые частые.

Дополнительные рекомендации по RDP

Решили проблему с лицензированием? Отлично. Несколько советов, чтобы она не вернулась.

Что значит ошибка "нет серверов лицензирования удалённых рабочих столов"?

Ошибка означает, что сервер RD Session Host не может связаться с RD Licensing Server для получения клиентской лицензии RDS CAL. Причиной может быть отсутствие роли лицензирования, неправильная групповая политика, истечение grace period или сетевые проблемы.

Сколько длится grace period для RDS без лицензии?

Grace period составляет 120 дней с момента первого подключения клиента к Session Host. В течение этого срока RDS работает без настроенного сервера лицензирования. После истечения 120 дней новые подключения блокируются.

Можно ли сбросить grace period RDS?

Технически да - удалением ключа реестра HKLMSYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod с правами SYSTEM. Однако это временная мера и нарушение лицензионного соглашения Microsoft. Правильное решение - установить и настроить RD Licensing Server с действующими RDS CAL.

RDS CAL Per User или Per Device - что выбрать?

Per User - если сотрудники подключаются с нескольких устройств (ноутбук, ПК, планшет). Per Device - если несколько пользователей работают посменно на одном компьютере или тонком клиенте. Для удалёнщиков, как правило, Per User выгоднее.

Какие порты нужны для RD Licensing?

Порт 135/TCP (RPC Endpoint Mapper) и динамические порты RPC (49152-65535/TCP). Оба должны быть открыты между Session Host и Licensing Server. Если серверы в разных подсетях или VLAN, проверьте правила файрвола на промежуточных устройствах.

RDS CAL 2019 подходят для Windows Server 2022?

Нет. RDS CAL должны быть той же или более новой версии, чем операционная система сервера. Для Windows Server 2022 нужны RDS CAL 2022. CAL 2022 при этом подходят и для более ранних версий сервера - 2019, 2016.

Как узнать, сколько RDS CAL осталось свободных?

На Licensing Server выполните PowerShell-команду: Get-WmiObject Win32_TSLicenseKeyPack | Select TotalLicenses, IssuedLicenses, AvailableLicenses. Или откройте Remote Desktop Licensing Manager (licmgr.exe) - там отображается количество выданных и доступных лицензий по каждому пакету.