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.
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>
ettracert
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 <NomServeur>
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}
ID | Description | Cause 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 |
20499 | Erreur SSL/TLS lors du handshake | Filtrage 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 = "<NomServeur>"
$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
- Ouvrez
gpedit.msc
, puis Configuration de l’ordinateur › Modèles d’administration › Composants Windows › Services Bureau à distance › Hôte de session Bureau à distance › Licences. - Forcez le Mode de licence sur « Administration des licences RDS » et le serveur de licences sur « localhost ».
- Appliquez les modifications :
gpupdate /force
puis redémarrezTermService
.
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.