Ocorre um erro interno quando você tenta se conectar a uma VM do Azure por meio da Área de Trabalho Remota

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

  1. Em uma instância do PowerShell, use o NETSTAT para verificar se a porta 3389 é usada por outros aplicativos:

    Netstat -anob |more
    
  2. 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:

    1. Pare o serviço para o aplicativo que está usando o serviço 3389:

      Stop-Service -Name <ServiceName> -Force
      
    2. Inicie o serviço de terminal:

      Start-Service -Name Termservice
      
  3. Se o aplicativo não puder ser interrompido ou se este método não se aplicar a você, altere a porta para RDP:

    1. 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
      
    2. Defina o firewall para a nova porta:

      Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
      
    3. 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

  1. 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"
    
  2. Se você não conseguir renovar o certificado usando este método, tente renovar o certificado autoassinado RDP remotamente:

    1. Em uma VM em funcionamento que tenha conectividade com a VM com problemas, digite mmc na caixa Executar para abrir o Microsoft Management Console.

    2. No menu Arquivo, clique em Adicionar/Remover snap-in, selecione Certificados e, em seguida, selecione Adicionar.

    3. Selecione Contas de computador, selecione Outro computador e adicione o endereço IP da VM com problema.

    4. Vá para a pasta Remote Desktop\Certificates, clique com o botão direito do mouse no certificado e selecione Excluir.

    5. Em uma instância do PowerShell do console serial, reinicie o serviço Remote Desktop Configuration:

      Stop-Service -Name "SessionEnv"
      
      Start-Service -Name "SessionEnv"
      
  3. 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
    
  4. 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á.

  1. 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
    
  2. 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
    
  3. 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

  1. Anexe o disco do SO a uma VM de recuperação.
  2. 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.
  3. Inicie uma conexão de área de trabalho remota com a VM de recuperação.

Ativar log de despejo e console serial

Para habilitar o log de despejo e o console serial, execute o seguinte script.

  1. Abra uma sessão de prompt de comando elevado (Executar como administrador).

  2. 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

  1. Abra uma sessão de prompt de comando elevado (Executar como administrador).

  2. 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

  1. 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.

  2. 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
    
  3. 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
    
  4. 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
    
  5. 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.