Impossible de se connecter en RDP à Windows Server 2019 Essentials : diagnostic complet et correctifs

Blocage RDP sur Windows Server 2019 Essentials ? Voici un guide complet pour diagnostiquer, corriger et prévenir l’erreur « Le serveur a atteint son nombre maximal de connexions ». Suivez pas à pas et retrouvez vos accès distants en quelques minutes.

Sommaire

Vue d’ensemble du problème

Un matin, l’administrateur tente de se connecter au serveur de fichiers exécutant Windows Server 2019 Essentials. L’authentification se déroule normalement : l’écran « Welcome » apparaît, la barre de progression tourne… puis l’avertissement redouté s’affiche :

Le serveur a atteint son nombre maximal de connexions, réessayez plus tard.

Le serveur semble donc considérer que les deux sessions administratives gratuites autorisées par l’édition Essentials sont déjà utilisées. Pourtant, une vérification immédiate avec query session (qwinsta) ne révèle que la console et le service services, autrement dit aucune session interactive bloquée.

Un redémarrage matériel complet n’y change rien et, faute de console KVM ou d’accès physique, l’équipe doit impérativement débloquer la machine à distance.

Pourquoi l’erreur apparaît‑elle ?

1. Sessions orphelines invisibles

Si un client RDP s’interrompt brutalement (perte réseau, panne de batterie, kill du processus MSTSC), la session côté serveur peut rester en état Connecting ou Disconnected sans jamais passer à Active. Dans certains cas, ces états fantômes n’apparaissent pas dans query session mais occupent malgré tout un slot.

2. Service TermService figé

TermService, le cœur des Remote Desktop Services, gère la négociation de licence et l’allocation des sessions. Un deadlock interne ou une fuite mémoire peut figer le service entre deux états et faire croire au broker qu’une session supplémentaire existe.

3. Politique de sécurité ou GPO restrictive

Une mise à jour de stratégie (GPO) peut, volontairement ou non, activer la clé de registre fDenyTSConnections = 1 ou abaisser le paramètre MaxInstanceCount à 0. Dans ce scénario, le message utilisateur fait allusion à un « quota » alors que, techniquement, la connexion est simplement refusée.

4. Problèmes de licence RDS

Bien que l’édition Essentials n’exige pas de CAL pour les connexions d’administration, l’ajout ultérieur du rôle RDS ou l’installation d’un produit tiers (logiciel de prise en main à distance) peut avoir modifié le mode de licence. Si le serveur passe en « Licence périmée », toutes nouvelles sessions, même administratives, seront rejetées.

5. Filtrage réseau ou antivirus

Un pare‑feu mal configuré ou un antivirus zélé peut ralentir l’établissement de la session, ce qui pousse le serveur à maintenir un contexte partiellement ouvert et, à la deuxième tentative, à considérer qu’il a déjà atteint la limite de sessions.

Diagnostic détaillé pas à pas

Étape 1 : confirmer la connectivité réseau

  • Depuis un poste client, exécutez ping <NomServeur> et tracert afin de valider la résolution DNS et la latence.
  • Lancez Test-NetConnection <NomServeur> -Port 3389 pour vérifier que le port RDP est bien ouvert.

Étape 2 : inventorier les sessions existantes

Enter-PSSession -ComputerName &lt;NomServeur&gt;
quser
qwinsta

Notez les états Disc, Conn et les ID associés. À ce stade, il est fréquent de ne voir aucune session suspecte, ce qui implique un problème plus bas niveau.

Étape 3 : réinitialiser les sessions fantômes

Si un ID apparaît mais ne devrait pas exister, réinitialisez‑le :

rwinsta <ID>

Cela force la fermeture et libère immédiatement le slot.

Étape 4 : redémarrer TermService sans redémarrer le serveur

Stop-Service TermService -Force
Start-Service TermService

Cette manœuvre est nettement plus rapide qu’un redémarrage global et ne perturbe que les connexions RDP.

Étape 5 : tenter la connexion console

Sur le poste d’administration, ouvrez : mstsc /admin /v:<NomServeur>. La session admin (ancienne option /console) contourne la limitation à deux connexions standard et n’utilise pas de CAL.

Étape 6 : inspection du registre

reg query "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server" /v fSingleSessionPerUser
reg query "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server" /v fDenyTSConnections

Les valeurs attendues sont respectivement 0x1 et 0x0.

Étape 7 : examen des journaux d’événements

Utilisez :

Get-WinEvent -LogName System -MaxEvents 100 |
    Where-Object {$_.Id -in 1012,1105,20499}
IDDescriptionCause fréquente
1012« Le serveur TermService ne peut pas accepter de nouvelles connexions. »Sessions orphelines
1105« Le serveur RDP a dépassé la poignée de licence. »CAL expirées
20499Erreur SSL/TLS lors du handshakeFiltrage antivirus

Solutions avancées

Script PowerShell de récupération automatique

Lorsque le problème se répète, déployez le script suivant sur une machine de supervision :

$srv = "&lt;NomServeur&gt;"
$sessions = (qwinsta /server:$srv | Select-String "Disc" | %{ ($_ -split "\s+")[2] })
foreach ($id in $sessions) { rwinsta $id /server:$srv }
Invoke-Command -ComputerName $srv -ScriptBlock {
    Stop-Service TermService -Force
    Start-Service TermService
}

Le script tourne en tâche planifiée et libère automatiquement les sessions fantômes avant l’arrivée des utilisateurs le matin.

Réinitialisation du modèle de licence

  1. Ouvrez gpedit.msc, puis Configuration de l’ordinateur › Modèles d’administration › Composants Windows › Services Bureau à distance › Hôte de session Bureau à distance › Licences.
  2. Forcez le Mode de licence sur « Administration des licences RDS » et le serveur de licences sur « localhost ».
  3. Appliquez les modifications : gpupdate /force puis redémarrez TermService.

Contournement par WinRM

Lorsque RDP est indisponible, WinRM reste rarement bloqué. Validez qu’il est activé :

winrm quickconfig

Puis utilisez Enter-PSSession ou Invoke-Command pour exécuter vos commandes de diagnostic et de réparation.

Bonnes pratiques pour éviter la panne

  • Mettre à jour TermService : appliquez les derniers correctifs cumulés pour Windows Server 2019, notamment KB5012695 qui corrige un deadlock RDP.
  • Surveiller les sessions inactives : configurez une politique de déconnexion automatique après 30 min d’inactivité via GPO.
  • Limiter les redirections MSTSC : désactivez la redirection audio ou imprimante lorsqu’elle n’est pas nécessaire, afin de simplifier la négociation.
  • Sécuriser le canal 3389 : placez‑le derrière un VPN et filtrez par allow‑list IP pour éviter les scans externes générant de fausses sessions.
  • Installer une console OOB : un module iDRAC, iLO ou IPMI coûte peu et évite des heures de downtime en cas de perte totale de RDP.

Foire aux questions

La commande reset session est‑elle risquée ?

Elle met fin brutalement à la session, ce qui peut provoquer une perte de travaux non sauvegardés, mais n’endommage pas le système. Utilisez‑la sur des ID Disc plutôt que Active.

Combien de sessions administratives gratuites permet Windows Server 2019 Essentials ?

Deux simultanées en mode console (/admin). Toute tentative d’ouverture d’une troisième échoue avec le message étudié.

Puis‑je temporairement étendre ce quota ?

Non. Il s’agit d’une limite contractuelle liée à la licence Essentials. Pour plus de sessions, migrez vers Standard + CAL RDS.

Redémarrer TermService interrompt‑il IIS ou SQL Server ?

Non : TermService est isolé. Seules les connexions RDP et RemoteApp sont coupées.

L’activation du rôle « Services Bureau à distance » est‑elle conseillée sur Essentials ?

Déconseillée. Essentials perdrait son exemption de CAL, complexifiant la gestion des licences.

Conclusion

Dans la plupart des cas, l’erreur « nombre maximal de connexions » résulte d’une session fantôme ou d’un service RDP instable. Un diagnostic méthodique—query session, réinitialisation, redémarrage ciblé, vérification de registre—permet un rétablissement rapide, même sans accès physique. Mettez en place un monitoring proactif et des politiques d’expiration de session pour prévenir toute récidive.

Sommaire