Risolvere i problemi di connessione RDP a macchine virtuali di Azure in base all'ID evento

Si applica a: ✔️ macchine virtuali di Windows

Questo articolo illustra come usare gli ID evento per risolvere i problemi che impediscono di stabilire una connessione Remote Desktop Protocol (RDP) a una macchina virtuale di Azure.

Sintomi

Si prova a usare una sessione Remote Desktop Protocol (RDP) per connettersi a una macchina virtuale di Azure. Dopo aver immesso le credenziali, la connessione ha esito negativo e viene visualizzato il messaggio di errore seguente:

Il computer non è in grado di connettersi al computer remoto. Provare a eseguire di nuovo la connessione. Se il problema persiste, contattare il proprietario del computer remoto o l'amministratore di rete.

Per risolvere questo problema, esaminare i log eventi nella macchina virtuale e quindi fare riferimento agli scenari seguenti.

Operazioni preliminari alla risoluzione dei problemi

Creare uno snapshot di backup

Per creare uno snapshot di backup, seguire i passaggi descritti in Creare uno snapshot di un disco.

Connettersi alla macchina virtuale in modalità remota

Per connettersi alla macchina virtuale in modalità remota, usare uno dei metodi descritti in How to use remote tools to troubleshoot Azure VM issues (Usare gli strumenti remoti per risolvere i problemi delle macchine virtuali di Azure).

Scenario 1

Registri eventi

In un'istanza CMD eseguire i comandi seguenti per controllare se nelle ultime 24 ore è stato registrato l'evento 1058 o l'evento 1057 nel log di sistema:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Microsoft-Windows-TerminalServices-RemoteConnectionManager'] and EventID=1058 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Microsoft-Windows-TerminalServices-RemoteConnectionManager'] and EventID=1057 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nome log: Sistema
Origine: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Data: ora
ID evento: 1058
Categoria attività: Nessuno
Livello: Errore
Parole chiave: classico
Utente: N/A
Computer: computer
Descrizione: il server host sessione Desktop remoto non è riuscito a sostituire il certificato autofirmato scaduto usato per l'autenticazione del server host sessione Desktop remoto nelle connessioni TLS. Il codice di stato pertinente era Accesso negato.

Nome log: Sistema
Origine: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Data: ora
ID evento: 1058
Categoria attività: Nessuno
Livello: Errore
Parole chiave: classico
Utente: N/A
Computer: computer
Descrizione: il server host sessione Desktop remoto non è riuscito a creare un nuovo certificato autofirmato da usare per l'autenticazione del server host sessione Desktop remoto nelle connessioni TLS, il codice di stato pertinente esiste già.

Nome log: Sistema
Origine: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Data: ora
ID evento: 1057
Categoria attività: Nessuno
Livello: Errore
Parole chiave: classico
Utente: N/A
Computer: computer
Descrizione: il server host sessione Desktop remoto non è riuscito a creare un nuovo certificato autofirmato da usare per l'autenticazione del server host sessione Desktop remoto nelle connessioni TLS. Il codice di stato pertinente era Keyset does not exist (Il set di chiavi non esiste).

È anche possibile cercare gli eventi di errore SCHANNEL 36872 e 36870 eseguendo i comandi seguenti:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36870 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36872 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nome log: Sistema
Origine: Schannel
Data:
ID evento: 36870
Categoria attività: Nessuno
Livello: Errore
Parole chiave:
Utente: SYSTEM
Computer: computer
Descrizione: si è verificato un errore irreversibile quando si tenta di accedere alla chiave privata delle credenziali del server TLS. Il codice errore restituito dal modulo di crittografia è 0x8009030D.
Lo stato dell'errore interno è 10001.

Causa

Questo problema si verifica perché le chiavi di crittografia RSA locali nella cartella MachineKeys sulla macchina virtuale non sono accessibili. Questo problema può verificarsi per uno dei motivi seguenti:

  1. Configurazione delle autorizzazioni non corretta per la cartella Machinekeys o per i file RSA.

  2. Chiave RSA danneggiata o mancante.

Risoluzione

Per risolvere il problema, è necessario configurare le autorizzazioni corrette per il certificato RDP seguendo questa procedura.

Concedere l'autorizzazione alla cartella MachineKeys

  1. Creare uno script usando il contenuto seguente:

    remove-module psreadline 
    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
    
  2. Eseguire questo script per reimpostare le autorizzazioni della cartella MachineKey e reimpostare i file RSA sui valori predefiniti.

  3. Provare ad accedere di nuovo alla macchina virtuale.

Dopo aver eseguito lo script, è possibile controllare i file seguenti in cui si verificano problemi di autorizzazioni:

  • c:\temp\BeforeScript_permissions.txt
  • c:\temp\AfterScript_permissions.txt

Rinnovare il certificato autofirmato RDP

Se il problema persiste, eseguire lo script seguente per assicurarsi che il certificato autofirmato RDP venga rinnovato:

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 non è possibile rinnovare il certificato, seguire questa procedura per provare a eliminare il certificato:

  1. In un'altra macchina virtuale della stessa rete virtuale aprire la casella Esegui, digitare mmc e quindi fare clic su OK.

  2. Nel menu File selezionare Aggiungi/Rimuovi snap-in.

  3. Nell'elenco Snap-in disponibili selezionare Certificati e quindi selezionare Aggiungi.

  4. Seleziona account Computer, quindi di nuovo Avanti.

  5. Selezionare Altro computer e quindi aggiungere l'indirizzo IP della macchina virtuale che presenta problemi.

    Nota

    Provare a usare la rete interna per evitare di usare un indirizzo IP virtuale.

  6. Seleziona Fine, quindi seleziona OK.

    Screenshot dell'opzione Altro computer nella finestra di dialogo Seleziona computer.

  7. Espandere i certificati, passare alla cartella Remote Desktop\Certificates, fare clic con il pulsante destro del mouse sul certificato e quindi scegliere Elimina.

  8. Riavviare il servizio di configurazione di Desktop remoto:

    net stop SessionEnv
    net start SessionEnv
    

    Nota

    A questo punto, se si aggiorna l'archivio da mmc, il certificato viene nuovamente visualizzato.

Provare nuovamente ad accedere alla macchina virtuale usando RDP.

Aggiornare il certificato TLS/SSL

Se si configura la macchina virtuale per l'uso di un certificato TLS/SSL, eseguire il comando seguente per ottenere l'identificazione personale. Controllare quindi se si tratta della stessa identificazione personale del certificato:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash

Se non lo è, modificare l'identificazione personale:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash /t REG_BINARY /d <CERTIFICATE THUMBPRINT>

È anche possibile provare a eliminare la chiave in modo che RDP usi il certificato autofirmato per RDP:

reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash

Scenario 2

Log eventi

In un'istanza CMD eseguire i comandi seguenti per controllare se nelle ultime 24 ore è stato registrato l'evento di errore SCHANNEL 36871 nel log di sistema:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36871 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nome log: Sistema
Origine: Schannel
Data:
ID evento: 36871
Categoria attività: Nessuno
Livello: Errore
Parole chiave:
Utente: SYSTEM
Computer: computer
Descrizione: si è verificato un errore irreversibile durante la creazione di una credenziale del server TLS. Lo stato dell'errore interno è 10013.

Causa

Questo problema è causato dai criteri di sicurezza. Quando le versioni precedenti di TLS (ad esempio, la versione 1.0) sono disabilitate, l'accesso RDP non riesce.

Risoluzione

RDP usa TLS 1.0 come protocollo predefinito. Tuttavia, il protocollo può essere sostituito con TLS 1.1, che è il nuovo standard.

Per risolvere questo problema, vedere Risolvere gli errori di autenticazione quando si usa RDP per connettersi a una macchina virtuale di Azure.

Scenario 3

Se nella macchina virtuale è stato installato il ruolo Gestore connessione Desktop remoto controllare se nelle ultime 24 ore si è verificato l'evento 2056 o l'evento 1296. In un'istanza CMD eseguire i comandi seguenti:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name=' Microsoft-Windows-TerminalServices-SessionBroker '] and EventID=2056 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name=' Microsoft-Windows-TerminalServices-SessionBroker-Client '] and EventID=1296 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nome log: Microsoft-Windows-TerminalServices-SessionBroker/Operational
Origine: Microsoft-Windows-TerminalServices-SessionBroker
Data: ora
ID evento: 2056
Categoria attività: (109)
Livello: Errore
Parole chiave:
Utente: SERVIZIO DI RETE
Computer: computer fqdn
Descrizione: non è possibile trovare la descrizione dell'ID evento 2056 da Microsoft-Windows-TerminalServices-SessionBroker. Il componente che genera questo evento non è installato nel computer locale o l'installazione è danneggiata. È possibile installare o riparare il componente nel computer locale.
Se l'evento ha avuto origine in un altro computer, le informazioni visualizzate dovevano essere salvate con l'evento.
Nell'evento sono state incluse le informazioni seguenti:
NULLO
NULLO
L'accesso al database non è riuscito.

Nome log: Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational
Origine: Microsoft-Windows-TerminalServices-SessionBroker-Client
Data: ora
ID evento: 1296
Categoria attività: (104)
Livello: Errore
Parole chiave:
Utente: SERVIZIO DI RETE
Computer: computer fqdn
Descrizione: non è possibile trovare la descrizione dell'ID evento 1296 da Microsoft-Windows-TerminalServices-SessionBroker-Client. Il componente che genera questo evento non è installato nel computer locale o l'installazione è danneggiata. È possibile installare o riparare il componente nel computer locale. Se l'evento ha avuto origine in un altro computer, le informazioni visualizzate dovevano essere salvate con l'evento. Nell'evento sono state incluse le informazioni seguenti:
Testo
Testo
Gestore connessione Desktop remoto non è pronto per la comunicazione RPC.

Causa

Questo problema è dovuto al fatto che viene modificato il nome host del server Gestore connessione Desktop remoto, ma questa modifica non è supportata.

Il nome host ha voci e dipendenze in Database interno di Windows, che è necessario per il funzionamento di servizi Desktop Remoto. La modifica del nome host dopo che la farm è già stata compilata comporta molti errori e può impedire il funzionamento del server gestore.

Risoluzione

Per risolvere questo problema, è necessario reinstallare il ruolo Gestore connessione Desktop remoto e Database interno di Windows.

Passaggi successivi

Schannel Events (Eventi di Schannel)

Panoramica tecnica di SSP Schannel

RDP Fails with Event ID 1058 & Event 36870 with Remote Desktop Session Host Certificate & SSL Communication (RDP ha esito negativo con l'ID evento 1058 e l'evento 36870 con il certificato host sessione Desktop remoto e la comunicazione SSL)

Schannel 36872 or Schannel 36870 on a Domain Controller (Evento Schannel 36872 o Schannel 36870 in un controller di dominio)

Event ID 1058 — Remote Desktop Services Authentication and Encryption (ID evento 1058 - Autenticazione e crittografia di Servizi Desktop remoto)

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.