Connettiti alle VM Linux utilizzando Identity-Aware Proxy

Questo documento descrive come connettersi a un'istanza di macchina virtuale (VM) tramite il relativo indirizzo IP interno utilizzando l'inoltro TCP di Identity-Aware Proxy (IAP).

L'inoltro TCP di IAP consente di stabilire un tunnel criptato tramite cui puoi inoltrare le connessioni SSH alle VM. Quando ti connetti a una VM che utilizza IAP, IAP aggrega la connessione SSH all'interno di HTTPS prima di inoltrarla alla VM. Quindi, IAP controlla se disponi delle autorizzazioni IAM richieste e, in caso affermativo, concede l'accesso alla VM.

Se devi connetterti a una VM senza indirizzi IP esterni e non puoi utilizzare IAP, esamina gli altri metodi elencati in Opzioni di connessione per le VM solo interne.

Prima di iniziare

  • Crea una regola firewall per abilitare le connessioni da IAP.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Seleziona la scheda relativa al modo in cui prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API Google Cloud , non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init
  • Imposta una regione e una zona predefinite.

Sistemi operativi supportati

Questi metodi di connessione sono supportati per tutte le immagini Linux pubbliche disponibili su Compute Engine. Per le immagini Fedora CoreOS, devi configurare l'accesso SSH prima di poter utilizzare questi metodi.

Connettiti alle VM

Per connetterti a una VM, completa i passaggi in una delle seguenti schede.

Console

Esegui il tunneling delle connessioni SSH tramite l'indirizzo IP interno di una VM utilizzando SSH nel browser nel seguente modo:

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

    Vai a Istanze VM

  2. Nell'elenco delle istanze della macchina virtuale, fai clic su SSH nella riga dell'istanza a cui vuoi connetterti.

gcloud

Esegui il tunneling delle connessioni SSH tramite l'indirizzo IP interno di una VM utilizzando il comando gcloud compute ssh con il flag --tunnel-through-iap:

    Nella console Google Cloud , attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  1. Connettiti alla VM eseguendo il seguente comando:

    gcloud compute ssh INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --tunnel-through-iap

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della VM a cui vuoi connetterti.
    • PROJECT_ID: l'ID del progetto che contiene la VM.
    • ZONE: il nome della zona in cui si trova la VM.

IAP Desktop

Per connetterti a una VM utilizzando IAP Desktop, segui questi passaggi:

  1. Se non l'hai ancora fatto, Installa IAP Desktop sulla tua workstation.

  2. Apri IAP Desktop. Viene visualizzata la finestra Aggiungi progetti.

  3. Quando richiesto, accedi utilizzando l'Account Google che ha accesso al progetto con le VM a cui vuoi connetterti.

  4. Nella finestra Aggiungi progetti, inserisci l'ID progetto o il nome del progetto che contiene le VM a cui vuoi connetterti.

  5. Nella finestra Project Explorer, fai di nuovo clic con il tasto destro del mouse sul nome della VM e seleziona Connetti per connetterti alla VM.

Client OpenSSH

Connettiti a una VM senza indirizzo IP esterno utilizzando SSH tramite un tunnel IAP. Puoi scrivere il tuo file di configurazione SSH (~/.ssh/config) in modo che strumenti come VS Code o un client OpenSSH possano connettersi direttamente.

  1. Genera e propaga le chiavi SSH connettendoti alla VM almeno una volta eseguendo il comando gcloud compute ssh:

    gcloud compute ssh INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --tunnel-through-iap

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della VM a cui vuoi connetterti.
    • PROJECT_ID: l'ID del progetto che contiene la VM.
    • ZONE: la zona in cui si trova la VM.

    Una volta stabilita la connessione, esci dalla sessione SSH.

  2. Apri o crea il file di configurazione SSH sulla tua workstation locale. Questo file si trova in genere in ~/.ssh/config su Linux e macOS o in %USERPROFILE%\.ssh\config su Windows.

  3. Aggiungi una voce di configurazione per la tua VM aggiungendo il seguente blocco al file di configurazione SSH:

    Host INSTANCE_NAME
        HostName INSTANCE_NAME
        IdentityFile PATH_TO_PRIVATE_KEY
        ProxyCommand gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=PROJECT_ID --zone=ZONE --verbosity=warning
        User USERNAME

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della VM a cui vuoi connetterti.
    • PATH_TO_PRIVATE_KEY: il percorso del file della chiave privata, in genere ~/.ssh/google_compute_engine.
    • PROJECT_ID: l'ID del progetto che contiene la VM.
    • ZONE: la zona in cui si trova la VM.
    • USERNAME: il nome utente sulla VM, ad esempio il tuo nome utente OS Login Google Cloud o il nome utente dei metadati.
  4. Connettiti alla VM dal terminale locale o dal client SSH eseguendo il seguente comando:

    ssh INSTANCE_NAME

App PuTTY

Per eseguire il tunneling delle connessioni SSH tramite l'indirizzo IP interno di una VM utilizzando PuTTY, segui questi passaggi:

  1. Se non l'hai ancora fatto, aggiungi una chiave SSH alla VM.
  2. Se l'app PuTTY non è già installata sulla tua workstation, scarica i file del pacchetto PuTTY.
  3. Nella console Google Cloud , vai alla pagina Istanze VM e trova il nome della VM a cui vuoi connetterti.

    Vai a Istanze VM

  4. Apri l'app PuTTY. Si apre una finestra di configurazione della connessione.
  5. Nel campo Nome host (o indirizzo IP), inserisci il nome utente associato alla chiave SSH e il nome della VM a cui vuoi connetterti. Utilizza il formato seguente:

    USERNAME@INSTANCE_NAME

    Sostituisci quanto segue:

    • USERNAME: il nome utente è quello specificato quando hai creato la chiave SSH.
    • INSTANCE_NAME: il nome della VM.
  6. Nel menu Category (Categoria), vai a Connection (Connessione) > SSH > Auth (Autenticazione) > Credentials (Credenziali) (o Connection (Connessione) > SSH > Auth (Autenticazione) nelle versioni di PuTTY precedenti alla 0.78).
  7. Nel campo File chiave privata per autenticazione, fai clic su Sfoglia e seleziona il file della chiave SSH privata (.ppk) corrispondente alla chiave pubblica che hai aggiunto alla VM.
  8. Nel menu Category (Categoria), vai a Connection (Connessione) > Proxy.
  9. Nella sezione Tipo di proxy, seleziona Locale.
  10. Nel campo Comando Telnet o comando proxy locale, inserisci il seguente comando:

    gcloud.cmd compute start-iap-tunnel INSTANCE_NAME PORT_NUMBER --listen-on-stdin --project=PROJECT_ID --zone=ZONE

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della VM a cui vuoi connetterti.
    • PORT_NUMBER: la porta su cui viene eseguito il daemon sshd. Il valore PORT_NUMBER predefinito è 22.
    • PROJECT_ID: il progetto che ospita la VM a cui vuoi connetterti.
    • ZONE: la zona in cui si trova la VM.
  11. Fai clic su Apri per connetterti alla VM.

Risoluzione dei problemi

Per trovare metodi per diagnosticare e risolvere le connessioni SSH non riuscite, consulta Risoluzione dei problemi relativi a SSH.

Passaggi successivi