Connessioni RDP bloccate su Windows Server 2019 Essentials: guida completa a sblocco, servizi e prevenzione

Le connessioni RDP verso Windows Server 2019 Essentials possono bloccarsi con il messaggio “Il server ha un numero limitato di connessioni”. Questa guida spiega come rientrare subito, liberare sessioni sospese, riattivare TermService e prevenire nuovi blocchi, mantenendo sicurezza e continuità operativa.

Indice

Contesto e scenario

Windows Server 2019 Essentials consente esclusivamente le due sessioni amministrative incluse nel sistema. Non è previsto l’uso come host RDS multiutente con CAL. Quando entrambe le sessioni risultano occupate o si bloccano (ad esempio per perdita improvvisa di rete, sospensione o spegnimento del portatile dell’amministratore), il server può visualizzare l’avviso: “Il server ha un numero limitato di connessioni; riprovare più tardi.”

Una situazione tipica: eseguendo query session o qwinsta si vedono solo le voci services, console e un’istanza rdp-tcp#XXXXX. È comune interpretare il suffisso numerico come una porta (es. 65536). In realtà è un identificatore di sessione progressivo, non la porta TCP. La porta di ascolto del desktop remoto resta, salvo modifiche, 3389.

Il blocco può dipendere da sessioni rimaste appese, dal servizio Remote Desktop Services non pienamente operativo, da regole firewall o antivirus, da policy che limitano le connessioni o, meno spesso, da aggiornamenti recenti che hanno introdotto regressioni.

Checklist immediata

Per ripristinare l’accesso in pochi minuti, segui questa sequenza pragmatica dal meno invasivo al più drastico.

  1. Collegati in modalità amministrativa: avvia mstsc /admin e prova a entrare. Questa modalità non consuma licenze RDS e tende a passare quando la coda licenze risulta “occupata”. Non aggira però il limite fisso di due sessioni.
  2. Individua e chiudi le sessioni sospese: usa qwinsta e reset session come indicato più avanti. In alternativa quser e logoff.
  3. Riavvia i servizi RDP: se disponi di PowerShell Remoting o di un secondo canale di gestione, arresta e riavvia TermService.
  4. Indaga sui servizi e sul firewall locali: verifica lo stato dei servizi RDP e le regole in ingresso su TCP 3389.
  5. Controlla log ed eventuali modifiche: Event Viewer, policy di limite connessioni, antivirus, aggiornamenti di sistema.

Comprendere la visualizzazione delle sessioni

Alcune voci ricorrenti che potresti vedere con query session:

  • services: sessione di sistema riservata ai servizi.
  • console: sessione della console fisica o della console virtuale in caso di macchina virtuale.
  • rdp-tcp#XXXXX: istanze di sessione RDP. Il valore dopo il cancelletto è un identificatore, non la porta di rete.

La presenza di una o due rdp-tcp in stato Active o Disc può saturare la capacità di accesso amministrativo. Una voce in Disc (disconnessa) continua a occupare slot finché non viene disconnessa o reimpostata.

Accesso senza incrementare il consumo delle sessioni

Quando il server rifiuta nuove connessioni, prova uno di questi canali di ingresso che non ampliano il numero di sessioni attive:

  • Client RDP in modalità amministrativa: mstsc /admin. Utile per entrare e liberare slot.
  • Console del virtualizzatore: se il server è una VM su Hyper‑V o altri hypervisor, usa la console del manager; non è una sessione RDP.
  • PowerShell Remoting: se già abilitato (Enable-PSRemoting in passato), puoi eseguire comandi senza aprire una nuova sessione RDP.

Chiusura delle sessioni bloccate

Di seguito le tecniche pratiche per identificare e liberare slot occupati.

<h3>Comandi classici</h3>
<p>Elenca le sessioni e reimposta quelle sospese o bloccate. Esegui dal tuo PC con credenziali amministrative o da una sessione alternativa già aperta.</p>
<pre><code>qwinsta /server:&lt;nome-o-ip-server&gt;

reset session /server:

In alternativa puoi usare quser per elencare utenti e logoff per disconnetterli:

quser /server:
logoff  /server:

Se vuoi ricongiungerti alla console senza aprire una nuova sessione:

tscon  /dest:console

Attenzione: reset session o logoff chiudono le sessioni senza salvare il lavoro in corso. Valuta prima se è possibile un disconnect controllato.

<h3>PowerShell di emergenza</h3>
<p>Con PowerShell Remoting attivo, puoi terminare automaticamente le sessioni disconnesse più vecchie di un certo intervallo.</p>
<pre><code># Esempio: disconnette le sessioni RDP in stato Disc più vecchie di 60 minuti

$threshold = (Get-Date).AddMinutes(-60) $query = quser | Select-String “rdp-tcp” foreach ($line in $query) { $parts = ($line -replace “\s{2,}”, “,”).Trim().Split(“,”) Struttura tipica: USERNAME,SESSIONNAME,ID,STATE,IDLE TIME,LOGON TIME $state = $parts[3] $id = $parts[2] if ($state -match “Disc”) { try { logoff $id -ErrorAction Stop } catch {} } }

Per scenari più strutturati, imposta policy di Session Time Limits in modo che le sessioni disconnesse vengano chiuse automaticamente dopo un periodo definito.

Riavvio dei servizi RDP senza riavviare il server

Se le sessioni non si liberano o il servizio è in uno stato incoerente, riavvia i componenti RDP. Questo intervento interrompe temporaneamente le connessioni esistenti.

sc stop TermService
sc start TermService

In alternativa via comandi di rete:

net stop termservice
net start termservice

Verifica anche lo stato di:

  • Remote Desktop Services (TermService) — Avvio Automatico, Stato In esecuzione.
  • Remote Desktop Configuration — Avvio Manuale, spesso non necessario sempre attivo.
  • Remote Desktop Services UserMode Port Redirector — Coinvolto nella reindirizzazione di dispositivi.

Verifiche su rete, firewall e antivirus

Quando l’errore di connessione persiste anche dopo aver liberato le sessioni, la causa può risiedere nello stack di rete o nella protezione locale.

Controllo connettività locale

# Dal client o da un host nella stessa rete del server
Test-NetConnection -ComputerName <server> -Port 3389

Se il test verso la porta ha esito negativo, verifica firewall di frontiera, NAT, regole di VPN o apparati che applicano QoS o ispezione profonda. Modifiche recenti su questi dispositivi possono aver introdotto filtri specifici per RDP.

Firewall sul server

Nel firewall di Windows assicurati che il gruppo di regole Desktop remoto sia abilitato per i profili di rete in uso. In test, puoi momentaneamente disabilitare la protezione per escludere interferenze, assicurandoti di farlo in una rete sicura.

Antivirus ed EDR

Alcuni agenti di sicurezza possono intercettare o bloccare TermService. In diagnostica, disattiva temporaneamente la protezione in tempo reale oppure applica esclusioni per i processi di sistema correlati al desktop remoto. Ripristina sempre la protezione a fine test.

Log di sistema e diagnosi mirata

I registri eventi offrono indizi chiave quando il problema non è semplicemente dovuto a slot saturi.

  • System e Application: cerca errori e avvisi relativi a TermService, a tentativi di autenticazione con NLA e a componenti di rete.
  • TerminalServices sotto Applications and Services Logs: LocalSessionManager e RemoteConnectionManager forniscono dettagli su creazione, ricongiungimento e chiusura delle sessioni.
  • Security: eventi di logon e logoff, blocchi per policy, negazioni di accesso al gruppo Remote Desktop Users.
  • Schannel: eventuali problemi di certificati e handshake TLS che terminano precocemente la sessione RDP.

Se il blocco coincide con aggiornamenti di sistema, valuta un rollback della quality update più recente e pianifica poi una reinstallazione quando Microsoft rilascia la correzione. In amministrazione remota:

# Elenco pacchetti installati di recente
dism /online /get-packages /format:table

Disinstallazione di una quality update specifica

wusa /uninstall /kb: /quiet /norestart

Policy e limiti di connessione

Una configurazione di Group Policy può forzare limiti più stringenti rispetto al default.

  • Limite del numero di connessioni: percorso Computer Configuration → Administrative Templates → Remote Desktop Services → Remote Desktop Session Host → Connections → Limit number of connections. Impostalo su Non configurata o su un valore coerente con le due sessioni amministrative.
  • Timeout di sessione: percorso Session Time Limits per disconnettere o terminare automaticamente le sessioni inattive o disconnesse.
  • Autenticazione a livello di rete: abilitala per sicurezza, ma ricorda che credenziali o canali Kerberos/NTLM non disponibili possono impedire l’accesso. Verifica risoluzione DNS e raggiungibilità dei controller di dominio.
  • Diritti di accesso: controlla che gli amministratori siano inclusi in Allow log on through Remote Desktop Services e che non siano coinvolti in Deny log on through Remote Desktop Services.

Per verificare rapidamente le policy effettive applicate al server:

gpresult /h C:\temp\gp.html
rsop.msc

Chiarimenti su licenze e peculiarità di Essentials

In Essentials non sono previste CAL RDS per l’uso amministrativo. L’opzione del client /admin consente di connettersi bypassando la logica di concessione licenze RDS, ma non rimuove il limite intrinseco di due sessioni. Strumenti come RD Licensing Diagnoser possono mostrare avvisi sull’assenza di un server licenze: è atteso in ambienti non RDS e non impedisce le sessioni amministrative.

Procedure guidate con esempi pronti

<h3>Sequenza rapida da linea di comando</h3>
<ol>
  <li>Prova l’ingresso amministrativo:
    <pre><code>mstsc /admin</code></pre>
  </li>
  <li>Elenca le sessioni e libera gli slot:
    <pre><code>qwinsta /server:&lt;server&gt;

reset session /server: Riavvia il servizio se necessario:

net stop termservice & net start termservice

Verifica ascolto su 3389:

netstat -ano | findstr 3389
Get-NetTCPConnection -LocalPort 3389 -State Listen
<h3>PowerShell per timeout automatici</h3>
<p>Per prevenire future saturazioni, imposta limiti di sessione tramite policy oppure applica un’attività pianificata che chiude periodicamente le sessioni disconnesse.</p>
<pre><code>$disc = quser | Select-String "Disc"

foreach ($line in $disc) { $parts = ($line -replace “\s{2,}”, “,”).Split(“,”) $id = $parts[2] try { logoff $id -ErrorAction Stop } catch {} }

Tabelle di riferimento rapido

<h3>Azioni veloci</h3>
<table>
  <thead>
    <tr>
      <th>Obiettivo</th>
      <th>Comando o procedura</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Forzare la chiusura di sessioni sospese</td>
      <td><code>qwinsta /server:&lt;nome&gt;</code> per identificare gli ID, poi <code>reset session &lt;ID&gt; /server:&lt;nome&gt;</code></td>
    </tr>
    <tr>
      <td>Collegarsi senza consumare licenze</td>
      <td><code>mstsc /admin</code> (o <code>/console</code> su client datati)</td>
    </tr>
    <tr>
      <td>Riavviare TermService senza riavvio completo</td>
      <td><code>net stop termservice</code> poi <code>net start termservice</code></td>
    </tr>
    <tr>
      <td>Controllare limite via policy</td>
      <td>Apri <em>gpedit.msc</em> → <em>Remote Desktop Session Host</em> → <em>Connections</em> → <em>Limit number of connections</em></td>
    </tr>
    <tr>
      <td>Verificare contatori di licenza</td>
      <td><em>RD Licensing Diagnoser</em> o <code>licmgr.exe</code> per diagnosi; in Essentials gli avvisi sono attesi</td>
    </tr>
  </tbody>
</table>

<h3>Servizi da tenere d’occhio</h3>
<table>
  <thead>
    <tr>
      <th>Servizio</th>
      <th>Nome</th>
      <th>Stato consigliato</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Remote Desktop Services</td>
      <td>TermService</td>
      <td>Automatico, In esecuzione</td>
    </tr>
    <tr>
      <td>Remote Desktop Configuration</td>
      <td>SessionEnv</td>
      <td>Manuale, Avviabile</td>
    </tr>
    <tr>
      <td>Remote Desktop Services UserMode Port Redirector</td>
      <td>UmRdpService</td>
      <td>Automatico, In esecuzione</td>
    </tr>
  </tbody>
</table>

<h3>Policy utili</h3>
<table>
  <thead>
    <tr>
      <th>Percorso</th>
      <th>Impostazione</th>
      <th>Effetto</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Remote Desktop Session Host → Connections</td>
      <td>Limit number of connections</td>
      <td>Definisce il numero massimo di sessioni simultanee</td>
    </tr>
    <tr>
      <td>Remote Desktop Session Host → Session Time Limits</td>
      <td>Set time limit for disconnected sessions</td>
      <td>Termina automaticamente le sessioni disconnesse</td>
    </tr>
    <tr>
      <td>Remote Desktop Session Host → Security</td>
      <td>Require user authentication for remote connections by using NLA</td>
      <td>Abilita l’autenticazione a livello di rete</td>
    </tr>
  </tbody>
</table>

Cause frequenti e come riconoscerle

SintomoPossibile causaVerifica rapidaRimedio
Messaggio di limite connessioniDue sessioni amministrative attive o disconnesseqwinsta mostra due rdp-tcpreset session delle sessioni in stato Disc, ingresso con /admin
Connessione accettata ma chiusa prima della schermata di loginProblemi con NLA o TLSEventi in Schannel e SecurityVerifica certificati, DNS, raggiungibilità del dominio
Impossibile raggiungere la portaFirewall locale o perimetrale, NAT o VPNTest-NetConnection -Port 3389Abilita regole, allinea il NAT, controlla regole della VPN
Blocchi dopo patch recentiRegressione introdotta da aggiornamentoCorrelazione data evento con data patchRollback della patch e riprova dopo fix

Indicazioni di prevenzione

  • Timeout automatici: imposta Set time limit for disconnected sessions per chiudere le sessioni non più attive.
  • Uso costante di modalità amministrativa: quando accedi per manutenzione, preferisci mstsc /admin.
  • Console del virtualizzatore: per interventi di emergenza, tieni sempre a disposizione l’accesso alla console dell’hypervisor.
  • Accesso mediato: evita l’esposizione diretta di RDP su internet. Usa VPN, gateway o PAM.
  • Monitoraggio: programma script o attività che notificano quando il numero di sessioni supera una soglia.
  • Antivirus certificati: scegli soluzioni compatibili con carichi server e prevedi esclusioni ragionate per i binari di sistema.

Domande ricorrenti

Perché vedo rdp-tcp#65536 in query session

È il nome dell’istanza di sessione, non una porta. La porta resta 3389 salvo configurazioni personalizzate. L’identificatore aumenta nel tempo e può raggiungere numeri elevati. La modalità amministrativa elimina il limite

No. /admin evita l’uso del meccanismo di licenza RDS ma non supera il limite intrinseco di due sessioni amministrative su Essentials. È normale vedere avvisi sul server licenze

Sì, in ambienti senza ruolo RDS a sessioni multiple gli avvisi del diagnostico licenze non impediscono l’uso amministrativo. Posso chiudere le sessioni senza perdere lavoro

Solo se l’utente aveva salvato. Reset session e logoff chiudono forzatamente. In alternativa usa disconnect o prova a contattare chi era connesso.

Procedura consigliata in sintesi

  1. Tentare l’accesso con mstsc /admin.
  2. Se ancora bloccato, usare qwinsta e reset session o logoff per liberare slot.
  3. Riavviare TermService se instabile.
  4. Indagare su firewall, antivirus, modifiche di rete, aggiornamenti e log se il rifiuto persiste.

Seguendo questo percorso si ripristinano nella maggior parte dei casi le connessioni senza interventi fisici sul server.

Appendice con comandi utili

# Elenco sessioni
qwinsta /server:<server>

Reset sessione bloccata

reset session  /server:

Accesso amministrativo

mstsc /admin

Riavvio servizio RDP

net stop termservice
net start termservice

Verifica ascolto

netstat -ano | findstr 3389
Get-NetTCPConnection -LocalPort 3389 -State Listen

Report policy applicate

gpresult /h C:\temp\gp.html

Visualizzazione utenti connessi

quser /server:

Disconnessione controllata

tsdiscon 
Indice