Risoluzione dei problemi relativi a RDP

In alcuni casi, potresti non riuscire a connetterti all'istanza di macchina virtuale (VM) Windows di Compute Engine con RDP. Ciò potrebbe essere dovuto a errori di configurazione, errori di rete o che il processo di avvio potrebbe non essere stato completato.

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

Assicurati che la VM sia online e pronta

Al termine dell'avvio della VM, che può richiedere alcuni minuti, confermane lo stato utilizzando uno dei seguenti metodi:

Porta seriale 1

La porta seriale 1 viene utilizzata per registrare l'attività del sistema e delle applicazioni. Visualizzane l'output per determinare che l'avvio della VM è 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 di cui vuoi visualizzare i log. Si apre 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 connetterti di nuovo 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 usare 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 di cui vuoi visualizzare i log. Si apre la pagina dei dettagli dell'istanza VM.

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

  4. Controlla 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 delle VM forniscono una rappresentazione visiva dello stato di una VM, come il monitor di un computer.

  1. Prima di poter acquisire uno screenshot della VM, devi abilitare il display virtuale della VM. Se non hai già attivato il display virtuale, consulta Attivazione dei display virtuali.

  2. Acquisisci uno screenshot. Per ulteriori informazioni, consulta Acquisizione di 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 attuale:

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

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

Se riscontri problemi quando connetti la VM Windows, è buona norma identificare se il problema riguarda la workstation che stai utilizzando per la connessione o la VM a cui ti stai connettendo. Verifica la connettività tra la workstation e la VM eseguendo il comando seguente 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 sulla stessa subnet per isolare i problemi di connettività RDP nell'istanza VM.

Controlla la password dell'istanza Windows

Per ogni istanza Windows di Compute Engine deve essere impostata una password locale se non è già presente in un dominio o in un'immagine personalizzata. Verifica di aver impostato la password corretta connettendoti alla VM tramite lo strumento a riga di comando Google Cloud CLI o la console Google Cloud. Per maggiori informazioni, consulta Connettersi alle VM Windows utilizzando la SAC.

In caso di problemi di connessione, prova a creare o reimpostare la password. Per saperne di più, consulta Creazione di password per le VM Windows.

Controlla se stai utilizzando Windows Server Core

Durante la connessione tramite RDP, se ricevi una finestra del prompt dei comandi su uno sfondo vuoto, è probabile che tu stia utilizzando Windows Server Core. Per confermare che esegui il comando seguente:

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 una Graphic User Interface per il tuo carico di lavoro, dai un'occhiata alla creazione di un'istanza Windows contenente 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 firewall che consente il traffico RDP. Se hai già un progetto o hai modificato le configurazioni, la regola firewall predefinita che consente l'RDP potrebbe non esistere. Conferma che una regola consenta al traffico RDP di connettersi alla rete in cui si trova l'istanza interessata.

Per verificare se la regola firewall default-allow-rdp esiste nel tuo progetto, consulta la pagina Regole firewall o esegui il seguente comando gcloud CLI:

gcloud compute firewall-rules list

Per creare una nuova regola se non ne esiste una, 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 per l'istanza dalla pagina dell'istanza VM o utilizzando il seguente comando gcloud CLI:

gcloud compute instances list

Utilizzo di Windows Remote Desktop Services (RDS)

Se nell'istanza hai installato Servizi desktop remoto di Windows (precedentemente noti come Servizi terminali), vengono applicate le condizioni delle licenze di accesso client (CAL). Con queste CAL, le connessioni RDP non andranno a buon fine in una delle seguenti condizioni:

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

I sintomi che indicano che potresti non avere un numero sufficiente di licenze valide includono messaggi come:

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

Se le connessioni RDP non vanno a buon fine, puoi utilizzare l'opzione di amministrazione per connetterti all'istanza per scopi amministrativi. Questa operazione può essere eseguita su un computer Windows usando il client nativo di connessione desktop remoto.

%systemroot%/system32/mstsc.exe /admin

L'immagine Windows Server e SQL Server on demand include due sessioni Remote Desktop simultanee per l'amministrazione.

Per risolvere i problemi relativi alle connessioni RDP, acquista nuove licenze RDS per la tua istanza. Per saperne di più sulle CAL, consulta la documentazione di Microsoft. In alternativa, se i servizi Remote Desktop non sono richiesti, disinstalla il servizio e utilizza le normali connessioni RDP.

Convalida le risorse e la configurazione a livello di sistema operativo

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

Assicurati che la VM abbia risorse adeguate

Verifica che CPU, memoria, utilizzo del disco e spazio su disco disponibile non stiano raggiungendo i limiti. Questi dati possono essere ispezionati visualizzando le metriche di osservabilità nella console Google Cloud. Alcune metriche sono disponibili solo per le VM in cui è installato Ops Agent. In alternativa, se Ops Agent non è installato, utilizza i comandi seguenti quando ti connetti a SAC:

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

  • Utilizzo CPU:
    typeperf "\Processor(_Total)\% Processor Time" -sc 5
  • Memoria utilizzata:
    typeperf "\Memory\% Committed Bytes In Use" -sc 5
  • Utilizzo disco:
    typeperf "\LogicalDisk(*)\% Idle Time" -sc 5
  • Capacità 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 possono 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 limiti, puoi modificare la risorsa per l'istanza VM. Per modificare le proprietà di una 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 comandi seguenti per assicurarti che l'istanza accetti connessioni:

  1. Verifica che l'adattatore Ethernet sia attivo:

    • Comando:
      netsh interface show interface
    • Superata: lo stato dell'amministratore è impostato su Attivato sul nome interfaccia etichettato Ethernet.
    • Non superato: lo stato dell'amministratore è impostato su Disattivato sul nome interfaccia etichettato 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 subnet a cui è assegnata l'istanza.
    • Non superato: nessun indirizzo IPv4 o un indirizzo che non corrisponde a quanto mostrato nella console Google Cloud.
    • Soluzione:vai al passaggio successivo.
  3. Verifica che il protocollo DHCP sia abilitato nell'istanza:

    • Comando:
      netsh interface ipv4 show addresses
    • Superata: l'output in Ethernet contiene DHCP Enabled: Sì.
    • Non superato: l'output in Ethernet contiene DHCP Enabled: No.
    • Soluzione:attiva il protocollo 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 superato: (il servizio di desktop remoto non è presente nell'output)
    • Soluzione: avvia i Servizi di desktop remoto:
      net start "Remote Desktop Services"
  5. Verifica che le connessioni remote siano abilitate:

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

    • Comando:
      netsh advfirewall firewall show rule name="Remote Desktop -User Mode (TCP-In)"
    • Pass: Abilitato:Sì, Direzione: In, Profili: Pubblico, Raggruppamento: Remote Desktop, LocalIP: Qualsiasi, RemoteIP: Qualsiasi, Protocollo:TCP, LocalPort: 3389, RemotePort: Qualsiasi, Edge Traversal: No, Azione: Consenti

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

    • Soluzione: attiva la regola firewall predefinita "Desktop remoto" in Windows Firewall:

      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
    • Superata: numero porta REG_DWORD [NUMERO PORT]
    • Non superato: (numero di porta imprevisto)
    • Soluzione: configura il numero di porta nel registro richiesto per l'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"
    • Superata: cerca una voce relativa alla porta RDP assegnata con lo stato In ascolto. Puoi trovare il servizio corrispondente utilizzando l'identificatore di processo (PID) utilizzando il seguente comando:
      tasklist /svc | find ""
      dove PID è l'identificatore del comando precedente. Nell'output dovrebbe essere restituito solo Termservice.
    • Fail: tutto tranne Termservice che utilizza la porta assegnata.
    • Soluzione: configura l'applicazione o il servizio in modo che utilizzi un altro numero di porta.
  9. Assicurati che l'account utente connesso disponga delle autorizzazioni per le connessioni remote:

    • Comando:
      net localgroup "Remote Desktop Users"
    • Superato: (nome utente locale/di dominio di destinazione nell'elenco risultante)
    • Non superato: (nome utente locale/del dominio di destinazione mancante)
    • Soluzione: aggiungi la regola "Utenti 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 aggiunto a un dominio diverso. Per gli account locali, specifica solo il nome utente.

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

    • Comando:
      reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer
    • Superata: SecurityLevel REG_DWORD 0x1
    • Non superato: SecurityLivelli REG_DWORD 0x0 (o 0x2)
    • Soluzione: imposta il valore della negoziazione di sicurezza nel registro:
      reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 1 /f
  11. In situazioni in cui l'istanza è connessa a un dominio Active Directory, ma non è stato possibile stabilire la connessione, potresti visualizzare 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
    • Superata: Autenticazione utente REG_DWORD 0 x 0
    • Non superato: UserAuthentication REG_DWORD 0x1
    • Soluzione: imposta il valore dell'autenticazione a livello di rete nel registro:
      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 della MTU non sia superiore alla MTU della rete:

    • Comando:
      netsh interface ipv4 show subinterfaces
    • Superata: quando il numero dopo la MTU corrisponde all'MTU della rete VPC.
    • Non superato: quando il numero successivo alla MTU è maggiore della MTU della rete VPC.
    • Soluzione: imposta la 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 delle MTU, consulta la nostra documentazione sulla frammentazione dei pacchetti.

  13. Se provi a connetterti alla VM tramite RDP e la VM visualizza la schermata di layout della tastiera, devi selezionare una lingua connettendoti alla 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 Remote Desktop è stato rimosso dall'impostazione Criteri computer locale che si trova in Consenti l'accesso tramite Remote Desktop Services o SeRemoteInteractiveLogonRight.

  15. Verifica che non ci siano autorizzazioni mancanti che bloccano l'autenticazione dei certificati:

    • Comando:
      icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"
    • Superata: l'output è simile a Tutti:(R,W) BUILTIN\Administratives:(F)
    • Non superato: l'output non corrisponde a Tutti:(R,W) BUILTIN\ Administrators:(F)
  16. Assicurati che le impostazioni del client per la protezione antivirus/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, viene visualizzato un messaggio in cui viene indicato che il valore Timer scaduto verifica che i seguenti valori siano quelli previsti:

Percorso registro: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

Chiavi di registro:

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • MaxDisconnectionTime
  • RemoteAppLogoffTimeLimit

Questi valori sono impostati in millisecondi. Se queste chiavi non sono presenti nel registro, non ci saranno limiti di sessione sull'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 relativi all'avvio di Windows

Se i passaggi per la risoluzione dei problemi precedenti non hanno risolto il problema di connessione RDP, è possibile che l'istanza di Windows non si avvii o non sia eseguita correttamente. In questo caso, consulta la nostra guida per la risoluzione dei problemi di Windows.

Passaggi successivi