Connettiti alle VM Linux utilizzando un bastion host

Questo documento descrive come connettersi a un'istanza di macchina virtuale (VM) tramite il relativo indirizzo IP interno utilizzando una VM bastion host. I bastion host forniscono un punto di accesso esterno a una rete Virtual Private Cloud (VPC) che contiene VM senza indirizzi IP esterni. Quando utilizzi un bastion host, connettiti prima al bastion host, poi alla VM di destinazione.

La connessione a una VM utilizzando il relativo indirizzo IP interno è utile se la VM non ha un indirizzo IP esterno. Se la VM ha un indirizzo IP esterno, connettiti alla VM utilizzando il suo indirizzo IP esterno. Se devi connetterti a una VM senza indirizzi IP esterni e non puoi utilizzare un bastion host, esamina gli altri metodi elencati in Scegli un'opzione di connessione per le VM solo interne.

Sistemi operativi supportati

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

Crea una VM bastion host

Crea una VM di Compute Engine all'interno della rete VPC di destinazione per utilizzarla come bastion host.

Console

Per creare una VM bastion host, segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Specifica i seguenti dettagli della VM:

    • Nome: il nome della VM.

    • Tipo di macchina: un tipo di macchina. Scegli un tipo di macchina di piccole dimensioni, ad esempio e2-micro.

    • Disco di avvio > Sistema operativo: qualsiasi sistema operativo Linux.

  3. Espandi la sezione Opzioni avanzate e segui questi passaggi:

    1. Nella sezione Interfacce di rete, seleziona la stessa rete VPC e la stessa subnet della VM di destinazione.

    2. Per Indirizzo IPv4 esterno, seleziona Temporaneo.

  4. Per creare e avviare la VM, fai clic su Crea.

gcloud

Crea una VM bastion host utilizzando il comando gcloud compute instances create:

  1. 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.

  2. Crea la VM bastion host eseguendo il seguente comando:

    gcloud compute instances create BASTION_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET
    

    Sostituisci quanto segue:

    • BASTION_NAME: il nome della VM bastion host.
    • ZONE: la zona della VM bastion host.
    • IMAGE_FAMILY: una famiglia di immagini Linux.
    • IMAGE_PROJECT: il progetto che contiene l'immagine.
    • SUBNET: la stessa subnet VPC della VM target. Se utilizzi la rete VPC predefinita, imposta SUBNET su default.

Connettiti alle VM

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

gcloud

Connettiti a una VM tramite un bastion host utilizzando SSH ed eseguendo il comando gcloud compute ssh:

  1. Connettiti alla VM bastion host eseguendo il seguente comando:

    gcloud compute ssh BASTION_NAME \
        --project=PROJECT_ID \
        --zone=ZONE

    Sostituisci quanto segue:

    • BASTION_NAME: il nome della VM bastion host.
    • PROJECT_ID: l'ID del progetto che contiene la VM del bastion host.
    • ZONE: il nome della zona in cui si trova la VM bastion host.
  2. Dalla VM bastion host, connettiti alla VM di destinazione tramite il suo indirizzo IP interno utilizzando il flag --internal-ip:

    gcloud compute ssh INSTANCE_NAME \
        --zone=TARGET_ZONE \
        --internal-ip

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome della VM a cui vuoi connetterti.
    • TARGET_ZONE: il nome della zona in cui si trova la VM di destinazione.

Client OpenSSH

Per connetterti a una VM tramite un bastion host da un client OpenSSH, segui questi passaggi:

  1. Se non l'hai ancora fatto, aggiungi una chiave SSH alla VM bastion host e alla VM di destinazione.
  2. Nella console Google Cloud , vai alla pagina Istanze VM e individua l'indirizzo IP esterno della VM bastion host e l'indirizzo IP interno della VM a cui vuoi connetterti.

    Vai a Istanze VM

  3. Apri un terminale sulla tua workstation.
  4. Connettiti alla VM bastion host eseguendo questo comando:

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    Sostituisci quanto segue:

    • PATH_TO_PRIVATE_KEY: il percorso del file della chiave SSH privata corrispondente alla chiave pubblica che hai aggiunto alla VM, ad esempio ~/.ssh/my-ssh-key o ~/.ssh/google_compute_engine se la chiave è stata generata da Google Cloud CLI.
    • USERNAME: il nome utente è quello specificato quando hai creato la chiave SSH.
    • EXTERNAL_IP: l'indirizzo IP esterno della VM bastion host.
  5. Dalla VM bastion host, connettiti tramite l'indirizzo IP interno di una VM utilizzando il seguente comando:

    ssh USERNAME@INTERNAL_IP

    Sostituisci quanto segue:

    • USERNAME: il nome utente è quello specificato quando hai creato la chiave SSH.
    • INTERNAL_IP: l'indirizzo IP interno della VM.

App PuTTY

Per connetterti a una VM tramite un bastion host utilizzando PuTTY, segui questi passaggi:

  1. Se non l'hai ancora fatto, aggiungi una chiave SSH alla VM bastion host e alla VM di destinazione.
  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 individua l'indirizzo IP esterno della VM bastion host e l'indirizzo IP interno 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 l'indirizzo IP esterno della VM bastion host. Utilizza il formato seguente:

    USERNAME@EXTERNAL_IP

    Sostituisci quanto segue:

    • USERNAME: il nome utente è quello specificato quando hai creato la chiave SSH.
    • EXTERNAL_IP: l'indirizzo IP esterno della VM bastion host.
  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) > SSH > Auth (Autenticazione) e, nella sezione Authentication parameters (Parametri di autenticazione), seleziona Allow agent forwarding (Consenti inoltro agente).
  9. Fai clic su Apri per connetterti alla VM bastion host.
  10. Dalla VM bastion host, connettiti tramite l'indirizzo IP interno di una VM utilizzando il seguente comando:

    ssh USERNAME@INTERNAL_IP

    Sostituisci quanto segue:

    • USERNAME: il nome utente è quello specificato quando hai creato la chiave SSH.
    • INTERNAL_IP: l'indirizzo IP interno della 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