RDP encerra após autenticação no Windows Server 2022: checklist e correções (Your Remote Desktop Services session has ended)

Alguns Windows Server 2022 aceitam credenciais RDP mas encerram a sessão logo após a autenticação com a mensagem “Your Remote Desktop Services session has ended…”. Este guia prático mostra como diagnosticar e corrigir rapidamente — com comandos prontos para colar — focando em listener, porta, certificado, NLA/TLS, firewall e políticas de logon.

Índice

Visão geral do problema

Quando a sessão RDP termina imediatamente após digitar as credenciais (sem sequer apresentar o desktop), a causa mais comum está no servidor e não no cliente. Em Windows Server 2022, os culpados recorrentes são:

  • Listener RDP corrompido ou porta alterada.
  • Certificado do RDP ausente/expirado/inválido e falhas de NLA/TLS/CredSSP.
  • Direitos de logon (“Allow/Deny log on through Remote Desktop Services”) mal configurados.
  • Firewall local bloqueando 3389.
  • Serviços, GPOs ou hardening (TLS/Schannel, EDR) interferindo no handshake.

Como o seu cenário indica que servidores novos funcionam e os herdados não, há forte suspeita de certificado expirado, GPOs antigas ou endurecimento de segurança divergente.

Resumo executivo (resposta e solução)

Use este plano em 3 atos:

  1. Isolar: testar mstsc /v:localhost no console do servidor afetado. Se cair igual, é problema de servidor.
  2. Sanear o básico: garantir listener/porta/firewall, regenerar o certificado RDP, testar sem NLA para validar TLS/certificado, revisar direitos de logon.
  3. Normalizar: comparar GPOs/patches com um “servidor bom”, reativar NLA e consolidar um baseline de RDP (certificado válido, firewall, políticas).

Checklist de diagnóstico rápido (ordem sugerida)

Separar rede vs. servidor

No console do servidor afetado (KVM, iLO/DRAC, VM console, Hyper‑V, Azure Serial), execute:

mstsc /v:localhost
  • Conectou normalmente? O problema está na rede/ACL/NSG/VPN/balanceador/roteamento.
  • Desconectou igual? Foque no servidor: listener, certificado, NLA, políticas, serviços.

Listener e porta do RDP

Confirme que o listener rdp-tcp está ativo e a porta 3389 ouvindo:

qwinsta
netstat -ano | findstr :3389

Valide a porta no Registro (decimal/hex conforme o editor):

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber

Firewall do Windows

As regras do grupo Remote Desktop (Entrada) precisam estar habilitadas. Em ambientes endurecidos, verifique regras por perfil (Domain/Private/Public) e escopo de IPs permitido.

NLA, TLS e CredSSP

Se o encerramento ocorre imediatamente após “autenticação concluída”, pode ser falha no canal seguro (NLA/TLS). Teste temporariamente sem NLA para confirmar:

  • GUI: Propriedades do Sistema → Remote → desmarcar “Permitir conexões apenas com NLA”.
  • Registro: veja ações corretivas mais abaixo.

Se sem NLA funciona e com NLA cai, o problema está em certificado/aconfiabilidade/TLS.

Certificado do RDP

Abra Certificados (Computador Local)Remote Desktop → Certificates e verifique expiração, EKU e chave privada. Cheque também a ligação por hash:

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\SSLCertificateSHA1Hash

Certificado expirado ou hash apontando para um certificado inexistente costuma derrubar a sessão após autenticação, especialmente com NLA ativo.

Direitos de logon por RDP (políticas)

Em Local Security Policy → Local Policies → User Rights Assignment:

  • Allow log on through Remote Desktop Services deve incluir Administrators e/ou Remote Desktop Users (ou grupos equivalentes).
  • Deny log on through Remote Desktop Services não deve conter os mesmos grupos/usuários. O “Deny” prevalece.

Em domínios, compare GPOs com um servidor saudável via:

gpresult /h C:\gp.html

Outra verificação rápida:

secedit /export /cfg C:\Windows\Temp\secpol.cfg
findstr /i "SeRemoteInteractiveLogonRight SeDenyRemoteInteractiveLogonRight" C:\Windows\Temp\secpol.cfg

Serviços e integridade do RDP

  • Remote Desktop Services (TermService) deve estar em Running e Automatic.
  • Verifique logs em Event Viewer → Applications and Services Logs → Microsoft → Windows:
    • TerminalServices-RemoteConnectionManager/Operational (IDs 1149, 1058).
    • TerminalServices-LocalSessionManager/Operational.
    • RemoteDesktopServices-RdpCoreTS/Operational.
    • Security (4624/4625) para êxito/negação de logon.

Use PowerShell para extrair rapidamente:

# Eventos de conexão RDP recentes
Get-WinEvent -LogName 'Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational' -MaxEvents 100 |
  Where-Object {$_.Id -in 1149,1058} |
  Select-Object TimeCreated, Id, Message

Sessões presas e limites

Liste sessões e encerre zumbis:

qwinsta
logoff <ID>

Revise GPOs de tempo limite (Set time limit…, End disconnected sessions). Políticas agressivas podem causar logoff imediato.

Comparar com servidor saudável

  • Versão/patches (winver, Get-HotFix).
  • GPOs efetivas (gpresult /h em ambos).
  • Pertença a grupos locais (Administrators, Remote Desktop Users).
  • Software de segurança/EDR e hardening de TLS/Schannel.

Rede externa (se o passo de localhost funcionou)

# Do cliente ou do mesmo segmento
Test-NetConnection -ComputerName <Servidor> -Port 3389

Cheque NSG/ACL/VPN, NAT e balanceadores. Roteamento assimétrico e inspeção SSL/IDS/IPS podem interromper RDP.


Ações corretivas concretas (PowerShell) — execute com privilégios elevados

Atenção: aplique apenas se estiver autorizado. Reiniciar o serviço TermService desconecta sessões RDP ativas. Reative o NLA após corrigir certificado/TLS.

Reativar RDP, porta e firewall (defaults seguros)

# Permitir RDP
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Garantir porta 3389
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Type DWord -Value 3389
Firewall
Enable-NetFirewallRule -DisplayGroup 'Remote Desktop'
Reiniciar serviço
Restart-Service TermService -Force

Regenerar certificado RDP self‑signed (expirado/inválido)

# Apaga certificados antigos do RDP e força recriação
Get-ChildItem 'Cert:\LocalMachine\Remote Desktop' | Remove-Item -Force -ErrorAction SilentlyContinue
Restart-Service TermService -Force

Verificar novo certificado

Get-ChildItem 'Cert:\LocalMachine\Remote Desktop' | Format-List Subject, NotAfter, Thumbprint 

Usa certificado corporativo? Reinstale-o na loja correta (Computador Local → Remote Desktop → Certificates) e confirme a thumbprint em SSLCertificateSHA1Hash.

Testar sem NLA (diagnóstico) e reativar depois

# Desativar NLA TEMPORARIAMENTE para teste
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Type DWord -Value 0
Restart-Service TermService -Force
... testar conexão ...
Reativar NLA assim que corrigir certificado/TLS
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Type DWord -Value 1
Restart-Service TermService -Force

Corrigir direitos de logon (GPO/local)

  • Allow log on through Remote Desktop Services: adicionar Administrators e os grupos corretos.
  • Deny log on through Remote Desktop Services: garantir que Domain Users ou grupos genéricos não estejam bloqueando.

Verificação rápida via linha de comando:

secedit /export /cfg C:\Windows\Temp\secpol.cfg
findstr /i "SeRemoteInteractiveLogonRight SeDenyRemoteInteractiveLogonRight" C:\Windows\Temp\secpol.cfg

Se necessário, aplique correções via GPO central e rode gpupdate /force.

Outras correções úteis

  • Atualize patches do Windows (Get-HotFix / Windows Update).
  • Confirme que TLS 1.2 está habilitado no servidor (e que clientes suportam a versão exigida).
  • Verifique EDR/antivírus com inspeção de rede; teste com política temporariamente relaxada.
  • Em RDSH, valide modo de licenciamento e servidor de licenças. Para uso administrativo (até 2 sessões), não são necessárias CALs.

Tabelas de referência rápida

Sintoma → Causa provável → Ação

SintomaCausa provávelAção imediata
Queda logo após autenticaçãoCertificado RDP inválido / NLA / TLSRegenerar cert, testar sem NLA, revisar SSLCertificateSHA1Hash
Sem resposta na 3389Firewall/porta alteradaHabilitar regras “Remote Desktop”, garantir porta 3389
Mensagem de acesso negadoDireitos “Deny log on through RDS”Ajustar políticas; garantir “Allow log on through RDS” correto
Conecta em localhost, não pela redeACL/NSG/VPN/balanceadorTest-NetConnection -Port 3389, revisar caminho de rede
Logoff imediato só em alguns hosts antigosGPO herdada, hardening, cert expiradoComparar com servidor novo, alinhar baseline
Loop de logon se “programa inicial” está configuradoGPO “Start the following program at logon” apontando para EXE inválidoRemover/ajustar essa política em RDSH/hosts afetados

Eventos úteis de diagnóstico

LogEventoInterpretação
TerminalServices-RemoteConnectionManager1149Autenticação de usuário via RDP concluída
TerminalServices-RemoteConnectionManager1058Falha ao conectar/estabelecer sessão
RdpCoreTSvariaFalhas de handshake TLS/credenciais/cifra
Security4624/4625Logon bem-sucedido/negado (verificar Logon Type 10/3)

Chaves de Registro relevantes

ChaveValorSignificado
HKLM\...\Terminal ServerfDenyTSConnections (DWORD)0 = RDP permitido, 1 = RDP negado
HKLM\...\RDP-TcpPortNumber (DWORD)Porta de escuta (padrão 3389)
HKLM\...\RDP-TcpUserAuthentication (DWORD)1 = NLA habilitado, 0 = desabilitado (somente para teste)
HKLM\...\RDP-TcpSSLCertificateSHA1Hash (string)Thumbprint do certificado RDP em uso

Matriz de decisão (rápida)

  • Funciona via localhost, mas não externamente → Firewall/ACL/NSG/rota/porta alterada.
  • Falha igual com e sem NLA → Listener/serviço corrompido, direitos de logon, GPO de sessão/shell.
  • Funciona sem NLA e falha com NLA → Certificado/TLS/Confiança (corrigir cert e reativar NLA).
  • Eventos mostram “logon denied”Deny log on through RDS ou grupos incorretos.
  • Mensagens de licença RDS → Validar modo/licenciamento RDSH (para uso admin, não requer CAL).

Dica prática para o seu cenário

  1. Compare GPOs (gpresult /h) entre um servidor “bom” e um afetado.
  2. Regenerate o certificado RDP e reinicie o TermService nos afetados.
  3. Revise “Deny/Allow log on through RDS” (GPOs antigas costumam bloquear sem querer).
  4. Depois de estabilizar, reative NLA e documente um baseline (GPO/Firewall/Cert) para todos os 2022.

Automação: auditoria e reparo em lote

Use este script para auditar múltiplos hosts e apontar “verdes/vermelhos” para porta, NLA e certificado:

$servers = Get-Content .\servidores.txt

Invoke-Command -ComputerName \$servers -ScriptBlock {
\$result = \[ordered]@{
Hostname   = \$env\:COMPUTERNAME
RdpPort    = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber).PortNumber
NLA        = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication).UserAuthentication
TermSvc    = (Get-Service -Name TermService).Status
FirewallOK = (Get-NetFirewallRule -DisplayGroup 'Remote Desktop' | Where-Object {\$.Enabled -eq 'True' -and \$.Direction -eq 'Inbound'}).Count -gt 0
CertOK     = \$false
CertExp    = \$null
}
\$cert = Get-ChildItem 'Cert:\LocalMachine\Remote Desktop' -ErrorAction SilentlyContinue | Sort-Object NotAfter -Descending | Select-Object -First 1
if (\$cert) { \$result.CertOK = (\$cert.NotAfter -gt (Get-Date)); \$result.CertExp = \$cert.NotAfter }
\[pscustomobject]\$result
} | Format-Table -AutoSize 

Para um reparo padronizado (somente se alinhado com suas políticas), aplique o bloco “Reativar RDP, porta e firewall” e “Regenerar certificado” por Invoke-Command, testando primeiro em 1–2 hosts.


Boas práticas e baseline recomendado

  • Certificado RDP gerenciado: preferir certificado de CA interna com EKU de Server Authentication e FQDN correto; distribuir e vincular por GPO ou automação.
  • NLA habilitado por padrão (só desabilite temporariamente para diagnóstico).
  • Firewall restritivo: permitir 3389 apenas da rede de gestão; considerar VPN/jump host/bastion.
  • Grupos mínimos: uso de grupos de AD (ex.: “Srv‑RDP‑Admins”), evitando adicionar usuários diretamente.
  • GPOs de sessão: desabilitar “Start the following program at logon” salvo quando necessário; configurar limites de sessão razoáveis.
  • Schannel/TLS: TLS 1.2 habilitado; suites de cifra compatíveis com o parque de clientes.
  • Monitoramento: alertas para expiração de certificado RDP e alterações no SSLCertificateSHA1Hash.

Apêndice: comandos úteis adicionais

# Verificar escuta na 3389 via PowerShell moderno
Get-NetTCPConnection -LocalPort 3389 -State Listen

Checar propriedade de segurança do RDP

Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' |
Select-Object PortNumber, UserAuthentication

Adicionar grupo de AD a Remote Desktop Users

Add-LocalGroupMember -Group 'Remote Desktop Users' -Member 'DOMINIO\Grupo-RDP'

Forçar atualização de políticas

gpupdate /force

Listar sessões e terminar uma sessão zumbi

qwinsta
logoff \ 

Conclusão

O encerramento imediato da sessão RDP após autenticação em Windows Server 2022 normalmente aponta para problemas no host, com destaque para certificado/NLA, listener/porta e direitos de logon. O checklist acima, aliado aos comandos de correção e à matriz de decisão, permite ir do sintoma ao conserto de forma objetiva. Depois de estabilizar, consolide um baseline (GPO + firewall + certificado + NLA) para evitar regressões, especialmente em servidores herdados com políticas antigas.


Resumo prático final

  1. Teste mstsc /v:localhost → delimite rede vs. servidor.
  2. Sanear: listener/porta/firewall & regenerar certificado RDP.
  3. Testar sem NLA; se funcionar, resolver certificado/TLS e reabilitar NLA.
  4. Corrigir “Allow/Deny log on through RDS”.
  5. Comparar GPOs/patches com um servidor saudável e padronizar.
Índice