Risoluzione dei problemi relativi a RDP


In alcuni casi, potresti non essere in grado di connetterti all'istanza di macchina virtuale (VM) Windows Compute Engine con RDP. Il problema potrebbe essere dovuto a errori di configurazione, errori di rete o alla mancata completamento della procedura di avvio.

Questo documento descrive una serie di suggerimenti e approcci per la risoluzione dei problemi comuni relativi a RDP.

Assicurati che la VM sia online e pronta

Al termine dell'avvio della VM, che potrebbe richiedere alcuni minuti, verifica il suo stato utilizzando uno dei seguenti metodi:

Porta seriale 1

La porta seriale 1 viene utilizzata per registrare l'attività del sistema e delle applicazioni. Visualizza il suo output per verificare che l'avvio della VM sia terminato e se i servizi sono stati avviati correttamente.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM per cui vuoi visualizzare i log. Viene visualizzata la pagina dei dettagli dell'istanza VM.

  3. In Log, seleziona Porta seriale 1.

  4. Esamina l'output della porta seriale 1 e cerca un output simile al seguente:

    BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    
    UEFI: Attempting to start image.
    Description: Windows Boot Manager
    FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    OptionNumber: 3.
    
    2021/04/13 10:50:22 GCEGuestAgent: GCE Agent Started (version 20210128.00)
    2021-04-13T10:50:23.4621Z OSConfigAgent Info: OSConfig Agent (version 20210217.00.0+win@1) started.
    2021/04/13 10:50:42 GCEMetadataScripts: Starting startup scripts (version 20200129.00).
    2021/04/13 10:50:42 GCEMetadataScripts: No startup scripts to run.
    

L'output contenente GCEGuestAgent o GCEMetadataScripts conferma che Windows è stato avviato correttamente. Prova a riconnetterti alla VM utilizzando RDP.

Porta seriale 2

La porta seriale 2 fornisce una connessione interattiva alla VM e mostra anche l'output della console di amministrazione speciale (SAC) . Puoi utilizzare la console seriale 2 per determinare se i servizi di sistema sono stati avviati correttamente.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM per cui vuoi visualizzare i log. Viene visualizzata la pagina dei dettagli dell'istanza VM.

  3. In log, espandi Altro e poi fai clic su Porta seriale 2 (console).

  4. Esamina l'output della porta seriale 2 e cerca un output simile al seguente:

    BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    
    UEFI: Attempting to start image.
    Description: Windows Boot Manager
    FilePath: HD(2,GPT,DD3FB000-7000-4000-8000-3977378A7000,0x0000,0x00000)/\EFI\Microsoft\Boot\bootmgfw.efi
    OptionNumber: 3.
    
    <machine-info>
    <name>WINDOWS</name>
    <guid>b7ab5000-4000-e000-e000-bc5a738da000</guid>
    <processor-architecture>AMD64</processor-architecture>
    <os-version>10.0</os-version>
    <os-build-number>17763</os-build-number>
    <os-product>Windows Server 2019 Datacenter</os-product>
    <os-service-pack>None</os-service-pack>
    </machine-info>
    Computer is booting, SAC started and initialized.
    Use the "ch -?" command for information about using channels.
    EVENT: The CMD command is now available.
    SAC>
    

L'output contenente SAC started and initialized o CMD command is now available conferma che Windows è stato avviato correttamente. Prova a riconnetterti alla VM utilizzando RDP.

Screenshot della VM

Gli screenshot della VM forniscono una rappresentazione visiva dello stato di una VM, simile a un monitor del computer.

  1. Prima di poter acquisire uno screenshot della VM, devi attivare il display virtuale della VM. Se non l'hai ancora fatto, consulta la sezione Attivare i display virtuali.

  2. Acquisisci uno screenshot. Per ulteriori informazioni, consulta Acquisire uno screenshot da una VM.

  3. Esamina lo screenshot per verificare che l'istanza sia pronta.

Confronta lo screenshot con quanto segue per determinare lo stato corrente:

Se Windows non si avvia correttamente dopo alcuni minuti, consulta la guida Risoluzione dei problemi di Windows.

Controlla la connettività tra la workstation e l'istanza VM

Se riscontri problemi durante la connessione della VM Windows, è buona prassi identificare se il problema riguarda la workstation che stai utilizzando per la connessione o la VM a cui ti stai connettendo. Controlla la connettività tra la workstation e la VM eseguendo il seguente comando dalla workstation Linux, macOS o Windows:

curl -v telnet://DESTINATION_IP_ADDRESS:PORT

Sostituisci quanto segue:

  • DESTINATION_IP_ADDRESS: l'indirizzo IP della VM Windows
  • PORT: la porta configurata per la connessione tramite RDP sulla VM Windows

Puoi anche utilizzare i test di connettività per verificare ulteriormente la connettività tra l'istanza VM e altri prodotti e servizi Google Cloud. Inoltre, potrebbe essere utile configurare un bastion host nella stessa sottorete per isolare i problemi di connettività RDP nell'istanza VM.

Controlla la password dell'istanza Windows

Ogni istanza Windows Compute Engine deve avere una password locale impostata se non è già su un dominio o un'immagine personalizzata. Verifica di aver impostato la password corretta collegandoti alla VM tramite lo strumento a riga di comando Google Cloud CLI o la console Google Cloud. Per ulteriori informazioni, consulta Connettersi alle VM Windows utilizzando il SAC.

Se hai problemi di connessione, prova a creare o reimpostare la password. Per ulteriori informazioni, consulta Creare password per le VM Windows.

Verificare se utilizzi Windows Server Core

Quando ti connetti utilizzando RDP, se visualizzi una finestra del prompt dei comandi su un sfondo vuoto, è probabile che tu stia utilizzando Windows Server Core. Per confermare che stai eseguendo il comando riportato di seguito:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType

Server Core nell'output conferma che stai utilizzando la versione Windows Core.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    InstallationType    REG_SZ    Server Core

Se hai bisogno di un'interfaccia utente grafica per il tuo carico di lavoro, valuta la possibilità di creare un'istanza Windows contenente l'esperienza desktop anziché Server Core. In alternativa, puoi consultare la documentazione di Microsoft per la gestione di Windows Core Server.

Controlla le regole firewall VPC

Compute Engine esegue automaticamente il provisioning dei nuovi progetti con una regola del firewall che consente il traffico RDP. Se hai già un progetto o hai modificato le configurazioni, la regola firewall predefinita che consente RDP potrebbe non esistere. Verifica che una regola consenta al traffico RDP di connettersi alla rete su cui si trova l'istanza interessata.

Per verificare se la regola firewall default-allow-rdp esiste per il tuo progetto, controlla la pagina delle regole firewall oppure esegui il seguente comando gcloud CLI:

gcloud compute firewall-rules list

Per creare una nuova regola se non esiste, crea una regola con il seguente comando:

gcloud compute firewall-rules create allow-rdp --allow tcp:3389

Verifica l'indirizzo IP esterno

Assicurati di connetterti all'indirizzo IP esterno corretto per l'istanza. Visualizza l'IP dell'istanza dalla pagina dell'istanza VM o utilizzando il seguente comando gcloud CLI:

gcloud compute instances list

Utilizzo di Servizi desktop remoto (RDS) di Windows

Se nella tua istanza sono installati Servizi Desktop remoto di Windows (in precedenza noti come Servizi terminal), vengono applicate le condizioni delle licenze di accesso client (CAL). Con queste CAL, le connessioni RDP non andranno a buon fine se si verificano una delle seguenti condizioni:

  • Hai utilizzato tutte le licenze disponibili
  • La licenza è installata, ma non è configurata o attivata correttamente
  • Il periodo di prova di 180 giorni di RDS è scaduto

I sintomi che indicano che potresti non avere licenze valide sufficienti includono messaggi come:

  • Questa sessione remota è stata disconnessa perché non sono disponibili server di licenze di Desktop remoto per fornire una licenza.
  • La sessione remota è stata disconnessa a causa di un errore relativo alla licenza nel server di terminale.
  • La sessione remota è stata disconnessa perché non sono disponibili licenze di accesso client per Desktop remoto per questo computer.

Se le connessioni RDP non riescono, puoi utilizzare il comando di amministrazione per connetterti all'istanza per scopi amministrativi. Questa operazione può essere eseguita su un computer Windows utilizzando il client nativo Connessione desktop remoto.

%SystemRoot%\System32\mstsc.exe /admin

L'immagine on demand di Windows Server e SQL Server include due sessioni di desktop remoto simultanee per l'amministrazione.

Per risolvere i problemi relativi alle connessioni RDP, acquista nuove licenze RDS per la tua istanza. Per ulteriori dettagli sulle licenze CAL, consulta la documentazione di Microsoft. In alternativa, se i servizi di desktop remoto non sono richiesti, disinstalla il servizio e utilizza connessioni RDP normali.

Convalida la configurazione e le risorse a livello di sistema operativo

Se l'ambiente guest e le configurazioni per l'istanza sono corretti, il sistema operativo sull'istanza potrebbe essere configurato in modo errato. Inoltre, senza risorse adeguate è possibile che non venga stabilita una connessione RDP. Per convalidare la configurazione a livello di sistema operativo, connettiti al SAC Windows:

Assicurati che la VM disponga di risorse adeguate

Verifica che la CPU, la memoria, l'utilizzo del disco e lo spazio su disco disponibile non stiano raggiungendo i relativi limiti. Questi dati possono essere esaminati visualizzando le metriche di osservabilità nella console Google Cloud. Alcune metriche sono disponibili solo per le VM su cui è installato Ops Agent. In alternativa, se Ops Agent non è installato, utilizza i seguenti comandi quando sei connesso al SAC:

Utilizzo della CPU, utilizzo della memoria, utilizzo del disco e capacità del disco

  • Utilizzo della CPU:
    typeperf "\Processor(_Total)\% Processor Time" -sc 5
  • Utilizzo della memoria:
    typeperf "\Memory\% Committed Bytes In Use" -sc 5
  • Utilizzo del disco:
    typeperf "\LogicalDisk(*)\% Idle Time" -sc 5
  • Capacità del disco:
    fsutil volume diskfree C:

Di seguito sono riportati gli utilizzi delle risorse consigliati per una connessione RDP, tuttavia si tratta solo di stime e potrebbero variare da un'istanza all'altra.

  • CPU: <80%
  • Memoria: <80%
  • Spazio su disco: >20%
  • Disco inattivo: >50%

Se una delle stime suggerite sta raggiungendo i suoi limiti, puoi modificare la risorsa per l'istanza VM. Per modificare le proprietà della VM, scopri come modificare il tipo di macchina di un'istanza VM e aumentare le dimensioni di un disco permanente.

Controlla la configurazione del sistema operativo

Connettiti all'istanza tramite SAC ed esegui i seguenti comandi per assicurarti che l'istanza accetti le connessioni:

  1. Verifica che l'adattatore Ethernet sia attivo:

    • Comando:
      netsh interface show interface
    • Pass: lo stato di amministrazione è impostato su Attivato nel nome dell'interfaccia etichettato come Ethernet
    • Non riuscito: lo stato di amministrazione è impostato su Disattivato per il nome dell'interfaccia etichettato come Ethernet
    • Soluzione:attiva l'adattatore Ethernet:
      netsh interface set interface Ethernet admin=enabled
  2. Verifica che l'istanza abbia una configurazione IP valida:

    • Comando:
      ipconfig /all
    • Pass: l'adattatore Ethernet Ethernet mostrerà un indirizzo IPv4 della sottorete a cui è assegnata l'istanza.
    • Non riuscito: nessun indirizzo IPv4 o un indirizzo che non corrisponde a quello visualizzato nella console Google Cloud.
    • Soluzione: vai al passaggio successivo.
  3. Verifica che il DHCP sia abilitato nell'istanza:

    • Comando:
      netsh interface ipv4 show addresses
    • Pass: l'output in Ethernet contiene DHCP Enabled: Yes.
    • Non riuscito: l'output in Ethernet contiene DHCP Enabled: No.
    • Soluzione:attiva il DHCP sull'adattatore Ethernet:
      netsh interface ipv4 set address Ethernet dhcp
  4. Verifica che il servizio "Remote Desktop Service" sia in esecuzione:

    • Comando:
      net start | find "Remote Desktop Services"
    • Pass: Servizio Desktop remoto
    • Non riuscita: (servizio Remote Desktop mancante nell'output)
    • Soluzione:avvia i servizi di Desktop remoto:
      net start "Remote Desktop Services"
  5. Verifica che le connessioni remote siano attive:

    • Comando:
      reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
    • Passa: fDenyTSConnections REG_DWORD 0x0
    • Errore: fDenyTSConnections REG_DWORD 0x1
    • Soluzione: attiva le connessioni desktop remoto nel Registro di sistema:
      reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
  6. Assicurati che le connessioni Remote Desktop siano abilitate nel firewall di Windows:

    • Comando:
      netsh advfirewall firewall show rule name="Remote Desktop -User Mode (TCP-In)"
    • Autorizzazione: Enabled:Yes, Direction: In, Profiles: Public, Grouping: Remote Desktop, LocalIP: Any, RemoteIP: Any, Protocol:TCP, LocalPort: 3389, RemotePort: Any, Edge traversal: No, Action: Allow

    • Non riuscito: (risultati imprevisti, ad esempio abilitato = No)

    • Soluzione: attiva la regola firewall predefinita "Desktop remoto" nel firewall di Windows:

      netsh advfirewall firewall set rule group="remote desktop" new enable=Yes

  7. Controlla quale numero di porta è configurato per le connessioni RDP nell'istanza remota:

    • Comando:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
    • Passa: PortNumber REG_DWORD [NUMERO PORTA]
    • Non riuscito: (numero di porta imprevisto)
    • Soluzione: configura il numero di porta nel Registro di sistema richiesto per RDP:

      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /f /v PortNumber /t REG_DWORD /d [PORT NUMBER]

  8. Verifica che un'altra applicazione non stia tentando di utilizzare la stessa porta:

    • Comando:
      netstat -ano | find "3389"
    • Passa: cerca una voce per la porta RDP assegnata con lo stato In ascolto. Il servizio corrispondente può essere trovato utilizzando l'identificatore processo (PID) con il seguente comando:
      tasklist /svc | find ""
      dove PID è l'identificatore del comando precedente. L'output dovrebbe contenere solo Termservice.
    • Non riuscito: qualsiasi altro servizio, ad eccezione di Termservice, utilizza la porta assegnata.
    • Soluzione: configura l'applicazione/il servizio in modo da utilizzare un altro numero di porta.
  9. Assicurati che l'account utente collegato disponga delle autorizzazioni per le connessioni da remoto:

    • Comando:
      net localgroup "Remote Desktop Users"
    • Pass: (nome utente locale/del dominio di destinazione nell'elenco risultante)
    • Non riuscito: (nome utente locale/di dominio di destinazione mancante)
    • Soluzione: aggiungi la regola "Utenti di desktop remoto" a un utente del dominio:

      net localgroup "Remote Desktop Users" /add [DOMAIN\USERNAME]

      Il dominio è obbligatorio solo per gli account utente di un sistema unito a un dominio diverso. Per gli account locali, specifica solo il nome utente.

  10. Verifica che la negoziazione di sicurezza client/server sia impostata sul valore predefinito:

    • Comando:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer
    • Passa: SecurityLayer REG_DWORD 0x1
    • Non riuscito: SecurityLayer REG_DWORD 0x0 (o 0x2)
    • Soluzione: imposta il valore della negoziazione della sicurezza nel Registro di sistema:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 1 /f
  11. Se la tua istanza è collegata a un dominio Active Directory, ma non è stato possibile stabilire la connessione, potresti ricevere il seguente errore quando provi ad accedere all'istanza:

    The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA.
    

    Verifica che l'autenticazione a livello di rete (NLA) dell'utente sia impostata sul valore predefinito:

    • Comando:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication
    • Pass: UserAuthentication REG_DWORD 0x0
    • Errore: UserAuthentication REG_DWORD 0x1
    • Soluzione: imposta il valore Autenticazione a livello di rete nel Registro di sistema:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
  12. Verifica che la dimensione MTU non sia superiore a quella della rete:

    • Comando:
      netsh interface ipv4 show subinterfaces
    • Passa: quando il numero dopo MTU corrisponde al valore MTU della rete VPC.
    • Non riuscito: quando il numero dopo MTU è maggiore dell'MTU della rete VPC.
    • Soluzione: imposta l'MTU dell'interfaccia sull'MTU della rete VPC:

      netsh interface ipv4 set subinterface Ethernet mtu=MTU_OF_VPC_NETWORK

      Per ulteriori informazioni sulle incompatibilità delle dimensioni MTU, consulta la nostra documentazione sulla frammentazione dei pacchetti.

  13. Se provi a connetterti alla VM utilizzando RDP e la VM mostra la schermata del layout della tastiera, devi selezionare una lingua connettendoti al SAC di Windows. Per selezionare una lingua, segui questi passaggi:

    1. Connettiti a SAC.
    2. Apri PowerShell digitando powershell.
    3. Ottieni la stringa della lingua corretta.

      Get-WinUserLanguageList
    4. Imposta il layout che preferisci. Sostituisci LANGUAGE_TAG con il layout della lingua che preferisci (ad esempio en-US).

      Set-WinUserLanguageList -LanguageList LANGUAGE_TAG -force
    5. Riavvia l'istanza.

      shutdown -r -t 0
  14. Per gli errori RDP nella schermata di accesso che menzionano you need the right to sign in through Remote Desktop Services o you must be granted the Allow log on through Terminal Services right, il gruppo Utenti o Amministratori di Desktop remoto è stato rimosso dall'impostazione Criteri del computer locale in Consenti accesso tramite Servizi Desktop remoto o SeRemoteInteractiveLogonRight.

  15. Verifica che non manchino autorizzazioni che bloccano l'autenticazione dei certificati:

    • Comando:
      icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"
    • Pass: l'output è simile a Tutti:(R,W) BUILTIN\Amministratori:(F)
    • Non riuscito: l'output non corrisponde a Tutti:(R,W) BUILTIN\Amministratori:(F)
  16. Assicurati che le impostazioni del client di protezione antivirus/degli endpoint consentano il numero di porta e i servizi configurati.

Verificare i limiti di timeout della sessione

Se riesci a stabilire una connessione RDP, ma dopo un po' di tempo la connessione viene disconnessa con un messaggio che indica che il timer è scaduto, verifica che i seguenti valori siano come previsto:

Percorso del registry: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Chiavi del Registro di sistema:

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • MaxDisconnectionTime
  • RemoteAppLogoffTimeLimit

Questi valori sono impostati in millisecondi. Se queste chiavi non sono presenti nel registry, non ci sono limiti di sessione per l'istanza VM. Se queste chiavi sono presenti nel registro, ma i relativi valori sono impostati su 0, la sessione non scadrà mai.

Risolvere i problemi di avvio di Windows

Se i passaggi per la risoluzione dei problemi riportati sopra non hanno risolto il problema di connessione RDP, è possibile che l'istanza Windows non si avvii o non funzioni correttamente. In questo caso, consulta la nostra guida alla risoluzione dei problemi relativi a Windows.

Passaggi successivi