Condividi tramite


Si verifica un errore interno quando si tenta di connettersi a una macchina virtuale di Azure tramite Desktop remoto

Si applica a: ✔️ macchine virtuali di Windows

Questo articolo descrive un errore che potrebbe verificarsi quando si tenta di connettersi a una macchina virtuale (VM) in Microsoft Azure.

Note

Questo articolo è stato utile? Diamo importanza al contributo degli utenti. Usare il pulsante Feedback in questa pagina per comunicare se questo articolo è stato utile o come possiamo migliorarlo.

Sintomi

Non è possibile connettersi a una macchina virtuale di Azure usando il protocollo desktop remoto (RDP). La connessione si blocca nella sezione Configurazione remota oppure viene visualizzato il seguente messaggio di errore:

  • Errore interno RDP
  • Si è verificato un errore interno
  • Questo computer non può essere connesso al computer remoto. Provare a eseguire di nuovo la connessione. Se il problema persiste, contatta il proprietario del computer remoto o il tuo amministratore di rete

Causa

Questo problema potrebbe verificarsi per i seguenti motivi:

  • La macchina virtuale potrebbe essere stata attaccata.
  • Non è possibile accedere alle chiavi di crittografia RSA locali.
  • Il protocollo TLS è disabilitato.
  • Il certificato è danneggiato o scaduto.

Soluzione

Per risolvere questo problema, completare i passaggi nelle sezioni seguenti. Prima di iniziare, crea uno snapshot del disco del sistema operativo della VM interessata come backup. Per ulteriori informazioni, consultare Istantanea del disco.

Controlla la sicurezza RDP

Innanzitutto, controlla se il gruppo di sicurezza di rete per la porta RDP 3389 non è protetto (aperto). Se non è protetto e mostra * come indirizzo IP di origine per l'ingresso, limitare la porta RDP all'indirizzo IP di un utente specifico, quindi testare l'accesso RDP. Se ciò non riesce, completare i passaggi nella sezione successiva.

Usa il controllo seriale

Utilizza la console seriale o ripara la VM offline collegando il disco del sistema operativo della VM a una VM di ripristino.

Per iniziare, connettiti alla Console seriale e apri un'istanza di PowerShell. Se la console seriale non è abilitata sulla tua VM, vai alla sezione ripara la VM offline.

Passaggio: 1 Controllare la porta RDP

  1. In un'istanza di PowerShell, utilizza NETSTAT per verificare se la porta 3389 è utilizzata da altre applicazioni:

    Netstat -anob |more
    
  2. Se Termservice.exe utilizza la porta 3389, andare al passaggio 2. Se un altro servizio o un'applicazione diversa da Termservice.exe utilizza la porta 3389, attenersi alla seguente procedura:

    1. Arrestare il servizio per l'applicazione che utilizza il servizio 3389:

      Stop-Service -Name <ServiceName> -Force
      
    2. Avvia il servizio terminale:

      Start-Service -Name Termservice
      
  3. Se l'applicazione non può essere arrestata o se questo metodo non si applica a te, cambia la porta per RDP:

    1. Cambia la 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. Imposta il firewall per la nuova porta:

      Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
      
    3. Aggiornare il gruppo di sicurezza di rete per la nuova porta nella porta RDP del portale di Azure.

Passaggio 2: impostare le autorizzazioni corrette sul certificato autofirmato RDP

  1. In un'istanza di PowerShell, eseguire i seguenti comandi uno per uno per rinnovare il certificato autofirmato 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 non puoi rinnovare il certificato utilizzando questo metodo, prova a rinnovare il certificato autofirmato RDP da remoto:

    1. Da una macchina virtuale funzionante con connettività alla macchina virtuale che presenta problemi, digita mmc nella casella Esegui per aprire Microsoft Management Console.

    2. Nel menu File, seleziona Aggiungi/Rimuovi snap-in, seleziona Certificati, quindi seleziona Aggiungi.

    3. Seleziona Account computer, seleziona Un altro computer, quindi aggiungi l'indirizzo IP della VM problematica.

    4. Vai alla cartella Desktop remoto\Certificati, fai clic con il pulsante destro del mouse sul certificato, quindi seleziona Elimina.

    5. In un'istanza di PowerShell dalla console seriale, riavviare il servizio Configurazione desktop remoto:

      Stop-Service -Name "SessionEnv"
      
      Start-Service -Name "SessionEnv"
      
  3. Reimpostare l'autorizzazione per la cartella 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. Riavvia la macchina virtuale, quindi prova Avvia una connessione desktop remoto alla macchina virtuale. Se l'errore persiste, andare al passaggio successivo.

Passaggio 3: abilita tutte le versioni TLS supportate

Il client RDP utilizza TLS 1.0 come protocollo predefinito. Tuttavia, questo può essere modificato in TLS 1.1, che è diventato il nuovo standard. Se TLS 1.1 è disabilitato nella macchina virtuale, la connessione avrà esito negativo.

  1. In un'istanza CMD, abilita il protocollo 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. Per impedire al criterio AD di sovrascrivere le modifiche, interrompere temporaneamente l'aggiornamento del criterio di gruppo:

    REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
    
  3. Riavvia la VM in modo che le modifiche abbiano effetto. Se il problema è stato risolto, eseguire il comando seguente per riattivare i criteri di gruppo:

    sc config gpsvc start= auto sc start gpsvc
    
    gpupdate /force
    

    Se la modifica viene annullata, significa che esiste un criterio di Active Directory nel dominio della società. È necessario modificare tale politica per evitare che questo problema si ripeta.

Ripara la VM offline

Collegare il disco del sistema operativo a una macchina virtuale di ripristino

  1. Collegare il disco del sistema operativo a una macchina virtuale di ripristino.
  2. Dopo che il disco del sistema operativo è stato collegato alla VM di ripristino, assicurati che il disco sia contrassegnato come Online nella console di Gestione disco. Prendere nota della lettera di unità assegnata al disco del sistema operativo collegato.
  3. Avviare una connessione Desktop remoto alla VM di ripristino.

Abilitare il registro dump e la console seriale

Per abilitare il registro di dump e la console seriale, eseguire il seguente script.

  1. Apri una sessione del prompt dei comandi con privilegi elevati (Esegui come amministratore).

  2. Eseguire lo script seguente:

    In questo script si presuppone che la lettera di unità assegnata al disco del sistema operativo collegato sia F. Sostituire questa lettera di unità con il valore appropriato per la 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
    

Ripristina l'autorizzazione per la cartella MachineKeys

  1. Apri una sessione del prompt dei comandi con privilegi elevati (Esegui come amministratore).

  2. Eseguire lo script seguente. In questo script si presuppone che la lettera di unità assegnata al disco del sistema operativo collegato sia F. Sostituire questa lettera di unità con il valore appropriato per la 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
    

Abilita tutte le versioni TLS supportate

  1. Apri una sessione del prompt dei comandi con privilegi elevati (Esegui come amministratore) ed esegui i seguenti comandi. Lo script seguente presuppone che la lettera del driver assegnata al disco del sistema operativo collegato sia F. Sostituire questa lettera di unità con il valore appropriato per la VM.

  2. Controlla quale TLS è abilitato:

    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 la chiave non esiste o il suo valore è 0, abilita il protocollo eseguendo i seguenti script:

    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. Abilita 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. Scollega il disco del sistema operativo e ricrea la VM, quindi controlla se il problema è stato risolto.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.