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.
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:
- Isolar: testar
mstsc /v:localhost
no console do servidor afetado. Se cair igual, é problema de servidor. - Sanear o básico: garantir listener/porta/firewall, regenerar o certificado RDP, testar sem NLA para validar TLS/certificado, revisar direitos de logon.
- 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
Sintoma | Causa provável | Ação imediata |
---|---|---|
Queda logo após autenticação | Certificado RDP inválido / NLA / TLS | Regenerar cert, testar sem NLA, revisar SSLCertificateSHA1Hash |
Sem resposta na 3389 | Firewall/porta alterada | Habilitar regras “Remote Desktop”, garantir porta 3389 |
Mensagem de acesso negado | Direitos “Deny log on through RDS” | Ajustar políticas; garantir “Allow log on through RDS” correto |
Conecta em localhost, não pela rede | ACL/NSG/VPN/balanceador | Test-NetConnection -Port 3389 , revisar caminho de rede |
Logoff imediato só em alguns hosts antigos | GPO herdada, hardening, cert expirado | Comparar com servidor novo, alinhar baseline |
Loop de logon se “programa inicial” está configurado | GPO “Start the following program at logon” apontando para EXE inválido | Remover/ajustar essa política em RDSH/hosts afetados |
Eventos úteis de diagnóstico
Log | Evento | Interpretação |
---|---|---|
TerminalServices-RemoteConnectionManager | 1149 | Autenticação de usuário via RDP concluída |
TerminalServices-RemoteConnectionManager | 1058 | Falha ao conectar/estabelecer sessão |
RdpCoreTS | varia | Falhas de handshake TLS/credenciais/cifra |
Security | 4624/4625 | Logon bem-sucedido/negado (verificar Logon Type 10/3) |
Chaves de Registro relevantes
Chave | Valor | Significado |
---|---|---|
HKLM\...\Terminal Server | fDenyTSConnections (DWORD) | 0 = RDP permitido, 1 = RDP negado |
HKLM\...\RDP-Tcp | PortNumber (DWORD) | Porta de escuta (padrão 3389) |
HKLM\...\RDP-Tcp | UserAuthentication (DWORD) | 1 = NLA habilitado, 0 = desabilitado (somente para teste) |
HKLM\...\RDP-Tcp | SSLCertificateSHA1Hash (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
- Compare GPOs (
gpresult /h
) entre um servidor “bom” e um afetado. - Regenerate o certificado RDP e reinicie o
TermService
nos afetados. - Revise “Deny/Allow log on through RDS” (GPOs antigas costumam bloquear sem querer).
- 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
- Teste
mstsc /v:localhost
→ delimite rede vs. servidor. - Sanear: listener/porta/firewall & regenerar certificado RDP.
- Testar sem NLA; se funcionar, resolver certificado/TLS e reabilitar NLA.
- Corrigir “Allow/Deny log on through RDS”.
- Comparar GPOs/patches com um servidor saudável e padronizar.