Les sessions RDP qui se ferment aussitôt après l’ouverture sur Windows Server 2019 sont souvent le symptôme d’un conflit entre authentification, pilote, correctif ou stratégie. Suivez le guide complet ci‑dessous pour diagnostiquer et corriger rapidement le problème.
Fermeture immédiate des sessions RDP sur Windows Server 2019
Vue d’ensemble de la question
Dans un environnement de production basé sur VMware vSphere 7.0.3, une VM Windows Server 2019 (Desktop Experience) refusait soudainement toute connexion RDP : l’écran « Welcome » clignotait puis la session se fermait sans message d’erreur. Le redémarrage du serveur, la vérification du service TermService et l’appartenance des utilisateurs au groupe Remote Desktop Users n’ont pas suffi. Il a donc fallu déployer une démarche systématique de diagnostic pour identifier la cause racine et rétablir le service.
Réponse & solutions proposées
Axe d’investigation | Points de contrôle & actions correctives |
---|---|
Journaux d’événements RDS | Consultez : Applications & Services Logs → Microsoft‑Windows‑RemoteDesktopServices‑RdpCoreTS/Operational (codes de déconnexion 40/41/42). …→ Terminal‑Services‑RemoteConnectionManager/Operational. …→ TerminalServices‑LocalSessionManager/Operational. Le journal Security pour les échecs d’authentification et d’autorisation ( 4625 , 4776 ). |
Réseau & hyperviseur | Mesurez la latence : ping -n 20 serveur , pathping /n , tracert . Activez une trace réseau : netsh trace start capture=yes report=yes . Mettez à jour le pilote virtuel VMXNET3 via VMware Tools : version ≥ 12.4.5. Pour lever le doute, désactivez provisoirement les offloads (Large Send, Checksum) dans la NIC virtuelle. Côté vSphere, vérifiez les règles du Distributed vSwitch et d’éventuelles policies NSX. |
Ressources serveur | Surveillez CPU, RAM et I/O disque avec Performance Monitor pendant une tentative RDP : un pic à 100 % CPU ou un Committed Bytes épuisé peut provoquer une fermeture. Activez un Data Collector Set pour capturer % Processor Time , Available MBytes , Disk Queue Length . |
Stratégies de groupe (GPO) | Navigateurs GPMC :Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host Vérifiez Connections : Limit number of connections, Set time limit for active but idle sessions. Contrôlez Security : Require user authentication for remote connections by using NLA, Set client connection encryption level. Forcez le rafraîchissement : gpupdate /force puis eventvwr.msc pour confirmer l’application. |
Network Level Authentication (NLA) | Désactivez temporairement NLA :System Properties → Remote → Allow connections without NLA ou via Regedit : HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server → UserAuthentication =0 . Testez une connexion depuis un poste client mis à jour ; si elle réussit, la cause est souvent un CredSSP/tls mis à jour côté client et non côté serveur. |
Licences & rôles | Dans Server Manager → Remote Desktop Services, vérifiez que le serveur de licences est Active et que des CAL User/Device valides sont allouées. Le service Remote Desktop Licensing doit être démarré (Port TCP 135). Utilisez RD Licensing Diagnoser pour afficher les erreurs fréquentes : 0xC004F074 ou 0x40004 . |
Mises à jour & correctifs | Recherchez des KB récentes impactant CredSSP ou TLS (ex. KB5005568, KB5026361). Si la panne suit le Patch Tuesday, désinstallez le dernier CU via :wusa /uninstall /kb:5005568 /quiet /norestart . Redémarrez et validez. Une désinstallation temporaire est un excellent test A/B avant de réinstaller un correctif plus récent. |
Sessions fantômes | Listez les sessions :qwinsta /server:localhost Réinitialisez‑les :reset session <ID> /server:localhost ou rwinsta Des sessions orphelines en Disc ou Down monopoliseront des piles RDP et entraîneront des déconnexions éclair. |
Certificat RDS | Dans MMC → Certificates (Local Computer) → Remote Desktop, confirmez que le certificat n’est pas expiré, qu’il contient le FQDN de la machine et la clé privée. Renouvelez‑le via Enable‑RDPCertificateAutoEnrollment ou importez‑en un PKI/TLS valide puis redémarrez TermService. |
Informations complémentaires utiles
- Événements clés : RdpCoreTS 40 / 41 / 42 (raison 0 = échec d’authentification), RemoteConnectionManager 1026, LocalSessionManager 1130 sont souvent déterminants.
- Isolation du problème :
- Ouvrez la console VMware puis exécutez :
mstsc /v:localhost /admin
. Si la session locale tombe aussi, le problème est interne au système. - Créez un compte test (
New‑LocalUser
) pour éliminer les profils corrompus.
- Ouvrez la console VMware puis exécutez :
- Sécurité : LAPS, Credential Guard ou un antivirus interceptant mstsc.exe peuvent couper la connexion. Désactivez brièvement pour vérifier.
- VMware Tools : une version obsolète peut réinitialiser le pilote vidéo ou réseau durant la négociation du canal RDP.
Étapes pas‑à‑pas de diagnostic détaillé
La résolution rapide exige une approche structurée. Voici un guide chronologique que vous pouvez suivre sans outil payant :
- Confirmations préliminaires
- Connectivité :
telnet serveur 3389
depuis le LAN pour s’assurer que le port est ouvert. - Service RDP :
Get‑Service TermService
doit indiquer Running. S’il est en statut Stopped, redémarrez‑le :Start‑Service TermService
.
- Connectivité :
- Inspection des événements
Get-WinEvent -LogName "Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational" -MaxEvents 50 | Select TimeCreated,Id,LevelDisplayName,Message
Recherchez l’ID 40 avecErrCode 0
(credsihp) et l’ID 42 (stack decryption failed). Ces traces orientent vers une erreur d’authentification ou de chiffrement. - Test sans NLA
Désactivez NLA uniquement à titre temporaire, puis retestez la connexion. Si elle fonctionne, réactivez NLA et passez directement à la mise à jour du serveur pour aligner la version du protocole CredSSP/TLS. - Contrôle des GPO
Utilisezgpresult /H c:\gp.htm
pour auditer les stratégies effectives. Ouvrez le rapport dans Edge et recherchez « Remote Desktop Services » pour identifier une GPO limitant la session à 1 instance ou imposant un délai d’inactivité. - Capture réseau avancée
netsh trace start capture=yes scenario=rdp maxsize=512 tracefile=c:\trace.etl … effectuez une connexion RDP … netsh trace stop
Analyseztrace.etl
avec Microsoft Message Analyzer ou Wireshark filtré surtcp.port == 3389
; vérifiez la séquence Server Hello/Client Key Exchange. - Vérification des licences
Dans RD Licensing Diagnoser, un avertissement « No licensing mode configured » signifie que le rôle Session Host ne trouve pas de serveur de licences. Configurez‑le :Set-RDLicenseConfiguration -Mode PerUser -LicenseServer @("RDLIC01.contoso.local")
- Nettoyage des sessions fantômes
for /f "skip=1 tokens=3" %i in ('qwinsta') do reset session %i
- Reconstruction du sous‑système RDP
En dernier recours, supprimez puis réinstallez les rôles Remote Desktop Services :Remove-WindowsFeature RDS-RD-Server Add-WindowsFeature RDS-RD-Server
Méthodologie de remédiation
Une fois la cause identifiée, appliquez la correction adéquate :
- AuthN/AuthZ : alignez les politiques NLA et CredSSP côté client / serveur.
- Patch & pilote : installez la dernière Cumulative Update, mettez à jour VMware Tools et redémarrez.
- Licences : réactiver le serveur de licences ou convertir des CAL Device en CAL User pour absorber la charge.
- GPO : ajustez la limite de temps et le nombre de connexions simultanées.
- Certificat : déployez un nouveau certificat Wildcard SHA‑256 de 2048 bits, puis redémarrez TermService.
Bonnes pratiques préventives
- Surveillez Remote Desktop Services avec un outil APM (ex. SCOM) pour être alerté sur les codes d’événements 40/1026.
- Automatisez l’application des CU via WSUS, tout en maintenant un anneau Staging pour tester avant production.
- Planifiez un renouvellement automatique des certificats RDP grâce à l’inscription auto‑PKI.
- Documentez une procédure « break glass » console/admin en cas de verrou total.
- Effectuez des sauvegardes mensuelles du profil Default et des clés de registre RDP pour accélérer une restauration.
FAQ
Pourquoi le service RDP plante‑t‑il après le Patch Tuesday ? Microsoft corrige fréquemment CredSSP et la pile TLS. Si le client est patché et le serveur non, le handshake échoue, ce qui se manifeste par une fermeture immédiate. Quelle est la différence entre mstsc /admin et une session classique ? L’option /admin se connecte à la session console (ID 0) et ignore la plupart des limitations RDS : quotas, licences, redirections, etc. C’est l’outil de secours idéal. Comment savoir si mon certificat RDP est bien utilisé ? Dans le gestionnaire de certificats, la colonne Intended Purposes doit afficher « Server Authentication ». Vous pouvez aussi lancer qwinsta
: le champ Encryption doit indiquer SSL et non RDP Security Layer.
Annexe : commandes PowerShell et CLI utiles
# Liste des connexions RDP actives
Get-Process -Name "rdpclip","mstsc" | Format-Table -AutoSize
# Événements RDP sur les dernières 24 h
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624;StartTime=(Get-Date).AddHours(-24)} |
Where-Object {\$*.Properties\[8].Value -eq '10'} |
Select TimeCreated, @{n="User";e={\$*.Properties\[5].Value}}, Message
# Export des politiques RDS
secedit /export /cfg c:\rdp\_policies.inf
# Contrôle rapide des files d'attente CPU
typeperf "\Processor(\_Total)% Processor Time" -sc 5
En suivant cette grille de diagnostic exhaustive, vous déterminerez en général la cause — authentification NLA, ressources insuffisantes, correctif défaillant ou certificat expiré — et vous rétablirez l’accès RDP de manière fiable et documentée.