Hyper‑V Windows Server 2019 RDSH : corriger « No Remote Desktop License Server available » après la période de grâce

Symptôme clair : après 120 jours, votre hôte Hyper‑V sous Windows Server 2019 qui fait aussi office de RDSH refuse toute nouvelle session RDP avec « No Remote Desktop License Server available ». Voici comment rétablir l’accès proprement et durablement.

Sommaire

Problème

Un hôte Hyper‑V sous Windows Server 2019 Standard sert également de Remote Desktop Session Host (RDSH). À l’expiration de la période de grâce RDS (120 jours), toute nouvelle connexion RDP vers l’hôte échoue avec :

“No Remote Desktop License Server available.”

Les deux machines virtuelles hébergées, elles, restent accessibles en RDP.

Analyse (ce qu’il faut comprendre)

  • Mode Administration à distance vs. RDSH — Sans le rôle Remote Desktop Session Host, le serveur reste en « Administration à distance » : deux connexions RDP administratives sont autorisées gratuitement pour gérer la machine.
  • Dès que le rôle RDSH est installé, le serveur devient un hôte de sessions multi‑utilisateurs : il nécessite un serveur de licences RDS et des CAL (Client Access Licenses) adaptées (Per User ou Per Device).
  • La période de grâce de 120 jours vous offre un délai pour activer un serveur de licences et y installer vos CAL. À son expiration, les sessions RDP non‑administratives sont refusées.

Solutions pas‑à‑pas (vue d’ensemble)

ÉtapeActionDétails
1Mettre en place le serveur de licences RDSDans Server Manager : Add Roles and Features → Remote Desktop Services → cochez Remote Desktop Licensing. Activez le serveur via Server Manager › Tools › Remote Desktop Services › Remote Desktop Licensing Manager (licmgr.exe), puis installez vos CAL Per User ou Per Device.
2Pointer l’hôte Hyper‑V (RDSH) vers ce serveur de licencesExécutez gpedit.msc (ou appliquez une GPO au niveau domaine). Allez à Computer Configuration › Administrative Templates › Windows Components › Remote Desktop Services › Remote Desktop Session Host › Licensing. Activez Use the specified Remote Desktop license servers et indiquez le FQDN ou l’IP du serveur de licences. Activez Set the Remote Desktop licensing mode et choisissez Per User ou Per Device (selon vos CAL). Appliquez avec gpupdate /force, puis redémarrez le service Remote Desktop Services (TermService) ou le serveur.
3Besoin seulement des 2 connexions administratives ?Désinstallez le rôle Remote Desktop Session Host : l’hôte repasse en Administration à distance (2 canaux gratuits). En urgence, connectez‑vous en mstsc /admin (anciennement /console) pour un canal exempt de licence.
4DiagnostiquerL’outil RD Licensing Diagnoser (lsdiag.msc) repère les erreurs usuelles (mode non configuré, serveur introuvable, CAL manquantes). La clé de registre HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod contient l’expiration de la période de grâce (ne pas supprimer).

Procédures détaillées

Installer et activer le serveur de licences

  1. Ouvrez Server Manager → Add Roles and Features → Type Role‑based or feature‑based installation → Sélectionnez le serveur → Server Roles → Remote Desktop Services → cochez Remote Desktop Licensing.
  2. Après redémarrage si demandé, ouvrez Tools › Remote Desktop Services › Remote Desktop Licensing Manager (licmgr.exe).
  3. Dans RD Licensing Manager : clic‑droit sur le serveur → Activate Server et suivez l’assistant (mode automatique recommandé).
  4. Installez vos CAL : clic‑droit → Install Licenses, choisissez le type (RDS Per User ou Per Device), puis le programme d’acquisition et la clé.

Configurer l’hôte RDSH (Hyper‑V) pour utiliser ce serveur

Deux approches sont possibles : GPO (recommandée) ou registre/WMI (serveur autonome).

Via stratégie de groupe (GPO)

  1. Sur le serveur (ou via GPMC) : Computer Configuration › Administrative Templates › Windows Components › Remote Desktop Services › Remote Desktop Session Host › Licensing.
  2. Activez Use the specified Remote Desktop license servers et indiquez le ou les serveurs (séparés par des virgules).
  3. Activez Set the Remote Desktop licensing mode et sélectionnez le mode conforme à vos CAL (Per User ou Per Device).
  4. gpupdate /force puis redémarrez TermService ou le serveur.

Via registre / WMI (serveur hors domaine)

À utiliser si vous n’avez pas de GPO (workgroup) ; exécuter en invite élevée.

# Définir le serveur de licences
$ts = Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace "root\CIMV2\TerminalServices"
$null = $ts.SetSpecifiedLicenseServerList("MONSERVEUR-LIC")

# Définir le mode de licences : 2 = Per Device, 4 = Per User

$null = $ts.SetLicensingMode(4)  # 4 pour Per User, 2 pour Per Device

# (Alternative registre)

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\LicenseServers" -Force | Out-Null
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\LicenseServers\MONSERVEUR-LIC" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Licensing Core" -Name "LicensingMode" -Value 4 -Type DWord

# Appliquer

Restart-Service -Name TermService -Force </code></pre>

  <h3>Valider la configuration</h3>
  <ul>
    <li>Lancez <strong>RD Licensing Diagnoser</strong> (<code>lsdiag.msc</code>) : assurez‑vous que le mode est configuré et que le serveur de licences répond.</li>
    <li>Vérifiez que des CAL valides sont <em>installées</em> et <em>disponibles</em> dans <em>RD Licensing Manager</em> (<code>licmgr.exe</code>).</li>
    <li>Depuis l’hôte RDSH, testez la connectivité :
      <pre><code class="language-powershell">Test-NetConnection MONSERVEUR-LIC -Port 135   # RPC Endpoint Mapper
Test-NetConnection MONSERVEUR-RDSH -Port 3389 # RDP depuis un poste client

Vérifications système et journaux d’événements

  • Services : Remote Desktop Licensing et Remote Desktop Services (TermService) doivent être à l’état Running. Get-Service -Name TermServLicensing, TermService | Select-Object Name, Status, StartType
  • DNS : le FQDN du serveur de licences doit se résoudre (A/AAAA et PTR si possible).
  • Pare‑feu : autoriser TCP 3389 (RDP), TCP 135 (RPC) et la plage RPC dynamique si filtrage strict (par défaut : 49152‑65535).
  • Journaux (Event Viewer) :
    • Applications and Services Logs › Microsoft › Windows › TerminalServices‑RemoteConnectionManager
    • … › TerminalServices‑RDPClient/Operational
    • … › TerminalServices‑Licensing
    Recherchez les entrées mentionnant « licensing mode not configured », « license server not available », etc.

Comprendre les CAL RDS et éviter les pièges

AspectPer UserPer Device
ApplicationBasée sur l’utilisateur (comptabilité déclarative)Basée sur l’équipement (comptabilisée par le serveur de licences)
Contrôle techniqueNon strictement appliqué par l’hôte RDSHContrôlé : une licence est délivrée à chaque appareil
ScénariosUtilisateurs nominatifs, multiples postes, VDIPostes partagés, kiosques, salles de formation
Changement de modeToujours aligner le mode configuré sur les CAL réellement acquises
  • Rétro‑compatibilité : des CAL Server 2019 couvrent les hôtes 2016/2012 R2 ; l’inverse n’est pas valable.
  • Serveur de licences unique : un seul serveur peut fournir des CAL à plusieurs hôtes RDSH ; il suffit de le référencer partout.
  • Période de grâce : 120 jours à compter de la première session après installation du rôle RDSH.
  • Ne pas “tricher” : supprimer la clé GracePeriod est une violation de licence et peut endommager la pile RDS.

Cas particulier : hôte Hyper‑V qui fait aussi RDSH

Techniquement possible, ce cumul de rôles n’est pas recommandé : il augmente la surface d’attaque, complique les mises à jour et met en concurrence les ressources CPU/RAM/IO entre RDS et les VM. Deux stratégies robustes :

  1. Séparer les rôles : gardez l’hôte Hyper‑V « propre » (éventuellement Server Core) et exécutez le rôle RDSH dans une VM dédiée. Vous conserverez l’accès d’administration à l’hôte (canaux /admin) même en cas de défaut RDS côté VM.
  2. Si vous restez en cumul : mettez en place un serveur de licences RDS stable (idéalement une autre VM) et référencez‑le clairement par GPO. Surveillez les ressources et fixez des limites (Quota CPU, RAM réservée aux VM critiques).

Rétablir l’accès en urgence (break‑glass)

ButCommande / ActionCommentaires
Se connecter malgré l’erreurmstsc /adminUtilise un canal d’administration exempt de licence. Limité à 2 sessions concurrentes.
Appliquer la GPO immédiatementgpupdate /forceAprès avoir configuré le mode et le serveur de licences.
Redémarrer le service RDSRestart-Service TermService -ForceCoupera les sessions en cours ; planifiez un créneau.
Vérifier la prise en comptegpresult /r /scope computerConfirme que les paramètres de Licensing sont appliqués.

Dépannage approfondi

1) Le Diagnoser signale “licensing mode not configured”

  • Revalidez la GPO : Set the Remote Desktop licensing modeEnabled → mode correct.
  • Contrôlez le registre : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Licensing Core\LicensingMode doit valoir 2 (Per Device) ou 4 (Per User).
  • Redémarrez TermService.

2) Le Diagnoser indique “no license servers available”

  • GPO Use the specified license servers activée avec le FQDN (évitez les alias non résolus).
  • Testez ping / Resolve-DnsName / Test-NetConnection -Port 135 vers le serveur de licences.
  • Vérifiez que le service Remote Desktop Licensing tourne sur le serveur ciblé.

3) “CAL installed but not issued” en Per Device

  • Le serveur doit délivrer une CAL à chaque appareil. Laissez le poste se reconnecter pour que l’émission se fasse.
  • Si nécessaire, libérez une CAL périmée côté Licensing Manager pour un appareil qui n’existe plus.

4) Workgroup ou DMZ sans GPO

  • Utilisez la méthode WMI/registre (cf. plus haut) pour pointer l’hôte RDSH vers le serveur de licences.
  • Ouvrez TCP 135 et la plage RPC dynamique entre l’hôte RDSH et le serveur de licences.

5) Vous ne souhaitez plus de RDSH sur l’hôte Hyper‑V

  1. Connectez‑vous en mstsc /admin.
  2. Server Manager › Remove Roles and Features → supprimez Remote Desktop Session Host.
  3. Redémarrez : vous retrouvez 2 canaux d’administration, sans dépendre d’un serveur de licences.

Bonnes pratiques et sécurité

  • Séparer les rôles Hyper‑V / RDSH : architecture plus sûre et plus prévisible lors des mises à jour.
  • NLA et TLS : exigez l’authentification au niveau réseau (NLA) et un certificat TLS valide sur l’hôte RDSH.
  • Supervision : surveillez l’état des CAL, l’uptime du serveur de licences et les journaux RDS.
  • Automatisation : consignez vos choix (mode, serveur de licences) dans une GPO ou un script d’init pour tout nouvel hôte.

FAQ (rapide)

Q : Puis‑je “réinitialiser” la période de grâce ?
R : Non. Il n’existe pas de méthode supportée. Supprimer la clé GracePeriod est une violation de licence.

Q : Dois‑je installer le rôle “RD Licensing” sur le même serveur que RDSH ?
R : Pas nécessairement. Vous pouvez centraliser le serveur de licences (une seule instance pour plusieurs hôtes).

Q : Les CAL 2016 fonctionnent‑elles avec un hôte 2019 ?
R : Non. Les CAL doivent être au moins de la version de l’hôte. En revanche, des CAL 2019 couvrent 2016/2012 R2.

Q : Pourquoi mes VM restent accessibles alors que l’hôte ne l’est plus ?
R : Les VM n’exécutent vraisemblablement pas le rôle RDSH ; elles sont donc restées en mode Administration à distance (2 canaux).

Annexes : commandes utiles

TâcheCommande
Lister les fonctionnalités RDSGet-WindowsFeature *RDS*
Installer le rôle LicensingInstall-WindowsFeature RDS-Licensing -IncludeManagementTools
Vérifier l’état des servicesGet-Service TermService, TermServLicensing
Forcer l’application GPOgpupdate /force
Rapport GPO machinegpresult /r /scope computer
Test réseau RDP/RPCTest-NetConnection <cible> -Port 3389 / -Port 135
Vérifier le mode de licencesGet-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Licensing Core" LicensingMode
Redémarrer RDS (impactant)Restart-Service TermService -Force

Checklist “prête à l’emploi”

  • Le rôle Remote Desktop Licensing est installé et activé.
  • Les CAL correctes sont installées (quantité, version, mode).
  • Sur l’hôte RDSH : mode de licence configuré et serveur de licence spécifié (GPO ou registre).
  • RPC accessible (TCP 135 et RPC dynamique si filtré) + RDP (TCP 3389).
  • RD Licensing Diagnoser ne signale plus d’erreur.
  • Un test depuis un poste client ouvre une session non‑administrative sans message d’erreur.

Conclusion

Le message « No Remote Desktop License Server available » n’est pas une panne : il signale un manque de configuration après la période de grâce RDS. En activant un serveur de licences, en déployant vos CAL et en référençant clairement ce serveur sur l’hôte RDSH, vous restaurez l’accès en production. Profitez‑en pour durcir l’architecture : idéalement, gardez l’hôte Hyper‑V minimal et déplacez le rôle RDSH dans une VM dédiée.

Référence rapide : informations complémentaires

  • Durée de grâce : 120 jours dès la première connexion RDP post‑installation du rôle RDSH.
  • Compatibilité des CAL : CAL 2019 → ok pour hôtes 2019/2016/2012 R2 ; l’inverse non.
  • Serveur de licences unique pour plusieurs hôtes : oui, via GPO ou registre LicenseServers.
  • Ports requis : TCP 3389 (RDP), TCP 135 (RPC), RPC dynamique si filtrage strict.
  • Redémarrage : après changement de licence/stratégie, redémarrez TermService ou le serveur.
Sommaire