Ocorre um erro interno quando você tenta se conectar a uma VM do Azure por meio da Área de Trabalho Remota
Aplica-se a: ✔️ VMs do Windows
Este artigo descreve um erro que pode ocorrer ao tentar se conectar a uma máquina virtual (VM) no Microsoft Azure.
Observação
Esse artigo foi útil? Sua opinião é importante para nós. Use o botão Comentários nesta página para nos informar o quão bem este artigo funcionou para você ou como podemos melhorá-lo.
Sintomas
Você não pode se conectar a uma VM do Azure usando o protocolo de área de trabalho remota (RDP). A conexão fica travada na seção Configurando remoto ou você recebe a seguinte mensagem de erro:
- Erro interno RDP
- Ocorreu um erro interno:
- Esse computador não pode se conectar ao computador remoto. Tente se conectar novamente. Se o problema continuar, contate o proprietário do computador remoto ou o administrador de rede.
Motivo
Esse problema pode ocorrer pelas seguintes razões:
- A máquina virtual pode ter sido atacada.
- As chaves de criptografia RSA locais não podem ser acessadas.
- O protocolo TLS está desabilitado.
- O certificado está corrompido ou expirou.
Solução
Para solucionar esse problema, conclua as etapas nas seções a seguir. Antes de começar, faça um instantâneo do disco do sistema operacional da VM afetada como backup. Para saber mais, consulte Instantâneo de um disco.
Verifique a segurança RDP
Primeiro, verifique se o grupo de segurança de rede para a porta RDP 3389 não é seguro (aberto). Se não for seguro e mostrar * como o endereço IP de origem para entrada, restrinja a porta RDP ao endereço IP de um usuário específico e teste o acesso RDP. Se isso falhar, conclua as etapas na próxima seção.
Usar controle serial
Use o console serial ou repare a VM off-line anexando o disco do sistema operacional da VM a uma VM de recuperação.
Para começar, conecte-se ao Serial Console e abra uma instância do PowerShell. Se o console serial não estiver ativado em sua VM, vá para a seção reparar a VM off-line.
Etapa: 1 Verifique a porta RDP
Em uma instância do PowerShell, use o NETSTAT para verificar se a porta 3389 é usada por outros aplicativos:
Netstat -anob |more
Se Termservice.exe estiver usando a porta 3389, vá para a etapa 2. Se outro serviço ou aplicativo diferente do Termservice.exe estiver usando a porta 3389, siga estas etapas:
Pare o serviço para o aplicativo que está usando o serviço 3389:
Stop-Service -Name <ServiceName> -Force
Inicie o serviço de terminal:
Start-Service -Name Termservice
Se o aplicativo não puder ser interrompido ou se este método não se aplicar a você, altere a porta para RDP:
Altere a porta:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -name PortNumber -value <Hexportnumber> Stop-Service -Name Termservice -Force Start-Service -Name Termservice
Defina o firewall para a nova porta:
Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
Atualize o grupo de segurança de rede para a nova porta na porta RDP do portal do Azure.
Etapa 2: definir as permissões corretas no certificado autoassinado RDP
Em uma instância do PowerShell, execute os seguintes comandos, um por um, para renovar o certificado autoassinado RDP:
Import-Module PKI Set-Location Cert:\LocalMachine $RdpCertThumbprint = 'Cert:\LocalMachine\Remote Desktop\'+((Get-ChildItem -Path 'Cert:\LocalMachine\Remote Desktop\').thumbprint) Remove-Item -Path $RdpCertThumbprint Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
Se você não conseguir renovar o certificado usando este método, tente renovar o certificado autoassinado RDP remotamente:
Em uma VM em funcionamento que tenha conectividade com a VM com problemas, digite mmc na caixa Executar para abrir o Microsoft Management Console.
No menu Arquivo, clique em Adicionar/Remover snap-in, selecione Certificados e, em seguida, selecione Adicionar.
Selecione Contas de computador, selecione Outro computador e adicione o endereço IP da VM com problema.
Vá para a pasta Remote Desktop\Certificates, clique com o botão direito do mouse no certificado e selecione Excluir.
Em uma instância do PowerShell do console serial, reinicie o serviço Remote Desktop Configuration:
Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
Redefina a permissão para a pasta MachineKeys.
remove-module psreadline md c:\temp icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt Restart-Service TermService -Force
Reinicie a VM e tente iniciar uma conexão de área de trabalho remota com a VM. Se o erro persistir,vá para a etapa seguinte.
Etapa 3: habilitar todas as versões TLS compatíveis
O cliente RDP usa TLS 1.0 como protocolo padrão. No entanto, isso pode ser alterado para TLS 1.1, que se tornou o novo padrão. Se o TLS 1.1 estiver desabilitado na VM, a conexão falhará.
Em uma instância CMD, habilite o protocolo TLS:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Para evitar que a política AD substitua as alterações, interrompa temporariamente a atualização da política de grupo:
REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
Reinicie a VM para que as alterações tenham efeito. Se o problema for resolvido, execute o seguinte comando para reativar a política de grupo:
sc config gpsvc start= auto sc start gpsvc gpupdate /force
Se a alteração for revertida, significa que existe uma política do Active Directory no domínio da sua empresa. Você precisa alterar essa política para evitar que esse problema ocorra novamente.
Repare a VM offline
Anexe o disco do sistema operacional a uma VM de recuperação
- Anexe o disco do SO a uma VM de recuperação.
- Depois que o disco do sistema operacional for anexado à VM de recuperação, verifique se o disco está sinalizado como Online no console de gerenciamento de disco. Observe a letra da unidade atribuída ao disco do sistema operacional anexado.
- Inicie uma conexão de área de trabalho remota com a VM de recuperação.
Ativar o despejo de log e Console Serial
Para habilitar o log de despejo e o console serial, execute o seguinte script.
Abra uma sessão de prompt de comando elevado (Executar como administrador).
Execute o seguinte script:
Neste script, presumimos que a letra da unidade atribuída ao disco do sistema operacional anexado seja F. Substitua essa letra da unidade pelo valor apropriado para sua VM.
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REM Enable Serial Console bcdedit /store F:\boot\bcd /set {bootmgr} displaybootmenu yes bcdedit /store F:\boot\bcd /set {bootmgr} timeout 5 bcdedit /store F:\boot\bcd /set {bootmgr} bootems yes bcdedit /store F:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON bcdedit /store F:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200 REM Suggested configuration to enable OS Dump REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
Redefina a permissão para a pasta MachineKeys
Abra uma sessão de prompt de comando elevado (Executar como administrador).
Execute o seguinte script. Neste script, presumimos que a letra da unidade atribuída ao disco do sistema operacional anexado seja F. Substitua essa letra da unidade pelo valor apropriado para sua VM.
Md F:\temp icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt
Habilitar todas as versões TLS suportadas
Abra uma sessão de prompt de comando elevado (Executar como administrador) e execute os seguintes comandos. O script a seguir pressupõe que a letra do driver atribuída ao disco do sistema operacional anexado é F. Substitua essa letra de unidade pelo valor apropriado para sua VM.
Verifique qual TLS está ativado:
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Se a chave não existir ou seu valor for 0, ative o protocolo executando os seguintes scripts:
REM Enable TLS 1.0, TLS 1.1 and TLS 1.2 REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Habilitar NLA:
REM Enable NLA REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
Desanexe o disco do SO e recrie a VM e verifique se o problema foi resolvido.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.