Cuando un Windows Server 2019 Essentials rechaza todas las conexiones RDP con el aviso “El servidor tiene conexiones limitadas; inténtelo más tarde”, el servicio puede quedar inaccesible durante horas y comprometer tareas críticas que dependen del servidor. En esta guía aprenderás a diagnosticar la causa real, liberar sesiones fantasma, restaurar el listener y aplicar buenas prácticas para que la incidencia no vuelva a repetirse.
Resumen del problema
En ediciones estándar de Windows Server el servicio de Escritorio remoto solo permite dos sesiones administrativas simultáneas. Cuando alguna de estas sesiones queda desconectada sin cerrarse correctamente, el servidor interpreta que sigue ocupada y bloquea nuevos inicios de sesión. El mensaje en pantalla (“The server session limit was exceeded” o su versión en español) suele acompañarse de registros en TerminalServices-RemoteConnectionManager, pero en ocasiones no aparece ninguna pista y ni siquiera un reinicio total libera las conexiones. Abajo se describe el origen habitual de este comportamiento:
- Sesiones huérfanas creadas por caídas de red, hibernación repentina del cliente o cierre forzoso de la ventana RDP.
- Servicios colgados en el proceso
svchost.exe -k termsvcs
que gestionan el listener TCP 3389. - Periodo de gracia de licenciamiento RDS expirado accidentalmente después de instalar los roles de Servicios de Escritorio remoto.
- Políticas de grupo que limitan el número de conexiones o finalizan sesiones tras un tiempo de inactividad demasiado bajo.
Cómo diagnosticar el error de conexiones limitadas
Verificar sesiones con Qwinsta y Query
Antes de intervenir, confirma cuántas sesiones detecta realmente el sistema:
qwinsta /server:SERVIDOR
query session
Si solo ves services
, console
y rdp-tcp
(listener 65536) sin usuarios, pero el bloqueo persiste, la sesión oculta podría estar marcada con estado Disc y no mostrarse de inmediato. Usa entonces el modificador administrativo para entrar:
mstsc /admin /v:SERVIDOR
Esta conexión ignora el límite de dos administradores y te permite revisar la máquina desde dentro.
Detectar sesiones atascadas en la base de datos de Terminal Services
A veces la sesión queda registrada pero no se muestra en la tabla. Compruébalo directamenta en WMI:
Get-WmiObject -Class "Win32_LogonSession" |
Where-Object {$_.LogonType -eq 10} |
Select-Object LogonId, StartTime
Si encuentras un LogonId
sin usuario asociado, es síntoma de una sesión huérfana que conviene restablecer.
Revisar eventos clave
ID | Origen | Descripción típica |
---|---|---|
1128 / 1130 | TerminalServices-RemoteConnectionManager | El periodo de gracia de licenciamiento ha expirado |
50 | TermDD | Error de protocolo en la capa RDP |
20499 | RemoteDesktopServices | Restablecimiento del listener fallido |
1057 | TerminalServices-LocalSessionManager | Se alcanzó el límite de conexiones |
Filtra el Visor de eventos por estos identificadores para afinar el diagnóstico.
Soluciones rápidas: pasos prioritarios
- Cerrar la sesión fantasma
Después de entrar conmstsc /admin
, localiza la sesión desconectada:qwinsta rwinsta ID_SESION
El reinicio de la sesión (rwinsta
) libera inmediatamente el slot ocupado. - Reiniciar el servicio TermService
Si no ves ninguna sesión anómala, es probable que el listener esté colgado. Reinícialo en caliente:Restart-Service -Name TermService -Force
Este comando restablece el canal RDP sin reiniciar el servidor ni cortar otros servicios. - Comprobar licenciamiento RDS
Ve a Administrador del servidor → Servicios de Escritorio remoto → Licenciamiento. Si alguna vez instalaste el rol de RDS para pruebas y dejaste pasar los 120 días de gracia, el servidor bloqueará TODAS las conexiones, incluidas las administrativas. - Validar directivas de grupo
Ejecutagpresult /h gp.html
y busca en la sección Remote Desktop Services la directiva Limitar número de conexiones. Su valor debe ser 2; cualquier otro número o el estado “No definido” puede sobreescribir la configuración por defecto. - Descartar firewalls o antivirus
Comprueba que el puerto 3389 está abierto:Test-NetConnection SERVIDOR -Port 3389
Las suites EDR suelen interceptar procesos de red; si instalaste una recientemente, prueba a deshabilitarla temporalmente.
Soluciones avanzadas y mantenimiento proactivo
Recrear el listener RDP
Cuando la clave de registro del listener se corrompe, ni el reinicio de TermService lo arregla. Para forzar su regeneración:
# Cambia el puerto como medida temporal
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
-Name PortNumber -Value 3390
Restart-Service TermService
Devuelve el puerto a 3389
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
-Name PortNumber -Value 3389
Restart-Service TermService
Al alternar el puerto obligas a Windows a reconstruir los objetos internos que gestionan la escucha, eliminando valores dañados.
Automatizar la limpieza de sesiones desconectadas
Configura una tarea programada que ejecute cada noche:
ForEach ($s in (qwinsta | Where {$_ -match "Disc"})) {
$id = $s.Split()[-4]
rwinsta $id
}
Este script detecta sesiones en estado Disconnected y las cierra para liberar recursos antes del inicio de la jornada.
Establecer límites de tiempo y cierres automáticos vía GPO
- Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Session Time Limits → Set time limit for disconnected sessions
- End session when time limits are reached
Un valor de 30 minutos para sesiones desconectadas es un equilibrio entre comodidad y seguridad.
Monitorizar eventos y recibir alertas
Crea un suscriptor de eventos con wevtutil
para interceptar el ID 1057 y lanzar un correo de aviso:
wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational `
/q:"*[System[(EventID=1057)]]" /f:text /c:1
Integra esta salida en un script que invoque Send-MailMessage
y recibirás un email cada vez que se alcance el límite.
Plan B: acceso fuera de banda
Un servidor cuidado siempre dispone de una vía de rescate (iDRAC, iLO, KVM‑IP). Si tu máquina está virtualizada, habilita la consola del hipervisor; si está en hardware físico, solicita al proveedor un módulo de gestión remota. Con ello podrás reiniciar TermService o todo el sistema sin depender de RDP.
Preguntas frecuentes
¿En Windows Server 2019 Essentials puedo instalar licencias RDS CAL para tener más de dos sesiones?
No. La edición Essentials no admite roles RDS completos; solo permite dos sesiones administradas para tareas de mantenimiento. Para usuarios concurrentes necesitas Standard + licencias CAL.
¿Por qué el problema vuelve después de actualizar Windows?
Algunos parches de seguridad reemplazan binarios de TermService. Si tu configuración estaba tocada (puerto, listener, cifrado), el instalador puede restaurar valores por defecto y generar inconsistencias. Revisa directivas tras cada actualización mayor.
¿El comando /admin
es lo mismo que /console
?
Desde Windows Vista la consola física se asigna con /admin
. /console
sigue existiendo por compatibilidad pero redirige a la misma función.
Buenas prácticas para evitar bloqueos RDP
- Cierra siempre la sesión con Sign out en vez de solo cerrar la ventana.
- Actualiza controladores de red para reducir desconexiones por pérdida de enlace.
- Deshabilita reintentos automáticos en clientes RDP; cada reintento fallido puede dejar una sesión huérfana.
- Documenta quién usa la cuenta
Administrador
y fomenta cuentas individuales para rastrear conexiones.
Conclusión
El mensaje de “conexiones limitadas” no significa necesariamente que otros usuarios estén conectados; suele ser la señal de una sesión fantasma o un listener bloqueado. Con los comandos mstsc /admin
, qwinsta
y rwinsta
puedes recuperar el acceso en segundos. Si complementas esta acción con el reinicio selectivo de TermService y la revisión de licencias, tendrás una solución reproducible y segura. Finalmente, implementar cierres automáticos y monitorización de eventos reduce la probabilidad de que el incidente se repita.