Disconnettere le sessioni RDP rimaste aperte sul server
Scritto da Davide Bia in Sistemi Windows 30 Aprile 2008
Quando si superano il numero massimo di connessioni contemporanee ai Servizi Terminal di Windows - che in modalità amministratore sono limitate a 2 - risulta impossibile ricollegarsi ed amministrare il server. Questo succede soprattutto quando vengono state lasciate aperte delle sessioni da alcuni utenti che non si disconnettono correttamente - sia deliberatamente chiudendo il client di Desktop Remoto senza effettuare il logoff, che involontariamente a causa della caduta della connessione.

Per ripristinare il servizio senza riavviare il server è necessario eseguire alcuni comandi, da console oppure tramite telnet/SSH.
Ottenere la lista delle sessioni aperte
Per prima cosa è necessario conoscere quali sessioni sono rimaste appese sul server.
QUERY SESSION /SERVER:nomeserver
Il risultato del comando è una tabella con tutte le sessioni del server, compreso la console e la sessione RDP riservata al login/logoff. L’opzione /server può essere omessa: nel caso viene eseguita la query in locale.
NOMESESSIONE NOMEUTENTE ID STATO TIPO PERIFERICA
console 0 Conn wdcon
rdp-tcp 65536 Attendi connessione rdpwd
9 ConnQ
>rdp-tcp#19 davidebia 10 Attivo rdpwd
Per le operazioni successive il valore da segnare è il nome della sessione, che nell’esempio corrisponde a rdp-tcp#19.
Forzare la disconnessione
A questo punto, conoscendo il nome delle sessioni da chiudere, è possibile procedere alla disconnessione, una alla volta.
LOGOFF nomesessione /SERVER:nomeserver
Viene eseguito un normale logoff, con salvataggio del profilo ed esecuzione degli script di logout - è normale che richieda qualche minuto per i profili di grosse dimensioni.
Bypassare firewall e protezioni da remoto
Eseguendo le operazioni descritte da LAN o in locale non dovrebbero esserci particolari difficoltà, invece se l’host da ripristinare è esposto su Internet è probabile che la porta UDP 135 del protocollo RPC sia chiusa da un firewall.
Errore 1722 durante la ricezione dei nomi sessione
Errore [1722]:Server RPC non disponibile.
La soluzione migliore per bypassare il problema è quella di progettare una VPN o di installare un server SSH. In questo modo è possibile eseguire i comandi come se fossimo in LAN o locale senza compromettere la sicurezza del server. Come soluzione di emergenza, è possibile tuttavia utilizzare alcuni espedienti:
- Se è un server di posta (mail server), molto probabilmente è possibile creare degli account “eseguibili”, quindi creare un apposito script batch/WSH da caricare sul server.
- Se è un server web, molto probabilmente sono presenti PHP, ASP o ASP.NET. Tutti questi linguaggi hanno la possibilità di eseguire comandi e leggere l’output.
In tutti i casi è fortemente consigliato proteggere l’esecuzione della procedura con login/password.
