Aggiungi chiavi SSH alle VM

Questo documento descrive come aggiungere chiavi SSH alle istanze di macchine virtuali (VM) che utilizzano OS Login e VM che utilizzano chiavi SSH basate su metadati. Se tu o l'amministratore della tua organizzazione non ha abilitato OS Login, le tue VM usano chiavi SSH basate su metadati.

Prima di iniziare

  • Per informazioni sulla gestione dell'accesso alle VM di Compute Engine, consulta Scelta di un metodo di accesso.
  • Se non l'hai già fatto, crea una coppia di chiavi SSH.
  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Per utilizzare gli esempi di Terraform in questa pagina in un ambiente dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. Create local authentication credentials for your user account:

        gcloud auth application-default login

      Per ulteriori informazioni, vedi Set up authentication for a local development environment.

      REST

      Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Aggiunta di chiavi alle VM che utilizzano OS Login

Le VM che utilizzano OS Login accettano le chiavi SSH associate al tuo account Account. Puoi associare una chiave SSH pubblica al tuo Account Google utilizzando il gcloud CLI o tramite l'API OS Login. Se sei un amministratore di organizzazione, puoi aggiungere chiavi SSH agli account utente utilizzando API Directory.

Quando aggiungi chiavi SSH al tuo Account Google, Compute Engine genera combinando il nome utente e il dominio dell'indirizzo email associato con il tuo Account Google. Ad esempio, se il tuo indirizzo email è cloudysanfrancisco@gmail.com, il tuo nome utente è cloudysanfrancisco_gmail_com. Se aggiungi una chiave SSH in un progetto esterno all'organizzazione, il nome utente è preceduto dal prefisso ext_, ad esempio ext_cloudysanfrancisco_gmail_com. L'amministratore della tua organizzazione può personalizza il tuo nome utente API Directory. Se se hai già configurato un nome utente, Compute Engine utilizza quando aggiungi chiavi SSH.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per aggiungere una chiave SSH pubblica al tuo account, utilizza il Comando gcloud compute os-login ssh-keys add:

    gcloud compute os-login ssh-keys add \
       --key-file=KEY_FILE_PATH \
       --project=PROJECT \
       --ttl=EXPIRE_TIME
    

    Sostituisci quanto segue:

    • KEY_FILE_PATH: il percorso della chiave SSH pubblica sulla workstation. La chiave deve usare il formato public-openssh
    • PROJECT: (facoltativo) un progetto in cui vuoi per utilizzare la chiave SSH. Specifica questo campo per utilizzare la chiave SSH in un progetto all'esterno della tua organizzazione o non fai parte di un Organizzazione Cloud Identity
    • EXPIRE_TIME: facoltativo: la data e l'ora di scadenza Chiave SSH

      Ad esempio, se specifichi 30m, la chiave SSH scade dopo 30 minuti.

      Questo flag utilizza le seguenti unità:

      • s per i secondi
      • m per i minuti
      • h per le ore
      • d per i giorni

Terraform

Per aggiungere una chiave SSH pubblica al tuo account, utilizza la risorsa google_client_openid_userinfo insieme alla risorsa google_os_login_ssh_public_key.

data "google_client_openid_userinfo" "me" {
}

resource "google_os_login_ssh_public_key" "default" {
  user = data.google_client_openid_userinfo.me.email
  key  = file("id_rsa.pub") # path/to/ssl/id_rsa.pub
}

REST

Per aggiungere una chiave SSH pubblica al tuo account, utilizza l'API OS Login Metodo users.importSshPublicKey:

POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey

{
 "key": "SSH_KEY",
 "expirationTimeUsec": "EXPIRATION_TIMESTAMP"
}

Sostituisci quanto segue:

  • ACCOUNT_EMAIL: l'indirizzo email associato a il tuo account
  • SSH_KEY: la chiave pubblica che vuoi aggiungere all'account
  • EXPIRATION_TIMESTAMP: la data e l'ora di scadenza la chiave, in microsecondi dall'epoca (1 secondo = 106 microsecondi)

Aggiungi chiavi SSH alle VM che utilizzano chiavi SSH basate su metadati

VM che non utilizzano OS Login e archiviare le chiavi SSH nei metadati dell'istanza e del progetto Compute Engine. Puoi e usano chiavi SSH archiviate nei metadati di progetto per accedere a tutte le VM di un progetto. Puoi usano chiavi SSH archiviate nei metadati dell'istanza per accedere alle singole VM.

Compute Engine non rimuove automaticamente le chiavi SSH scadute da metadati alla scadenza, ma non è possibile usare chiavi scadute per definirne di nuovi e connessioni a VM. Se vuoi rimuovere le chiavi scadute dai metadati, consulta: Rimuovi le chiavi SSH dalle VM che utilizzano chiavi basate su metadati.

Puoi aggiungere una chiave SSH pubblica ai metadati di progetto o di istanze VM utilizzando la console Google Cloud, gcloud CLI o REST.

Aggiungi chiavi SSH ai metadati di progetto

Puoi aggiungere una chiave SSH pubblica ai metadati di progetto per accedere a tutte le VM in un progetto, ad eccezione delle VM che bloccano le chiavi SSH a livello di progetto. Per ulteriori informazioni bloccare le chiavi SSH a livello di progetto, consulta Blocca le chiavi SSH nelle VM che utilizzano chiavi SSH basate su metadati.

Console

Per aggiungere una chiave SSH pubblica ai metadati di progetto utilizzando Nella console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Metadati.

    Vai a Metadati

  2. Fai clic sulla scheda Chiavi SSH.

  3. Fai clic su Modifica.

  4. Fai clic su Aggiungi elemento.

  5. Aggiungi la tua chiave SSH pubblica nel campo Chiave SSH che si apre. La chiave deve essere in uno dei seguenti formati:

    • Formato di una chiave senza data di scadenza:

      KEY_VALUE USERNAME
    • Formato di una chiave con data di scadenza:

      KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

    Sostituisci quanto segue:

    • KEY_VALUE: valore della chiave SSH pubblica
    • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

      Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connettiti alle VM Linux come utente root.

      Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

    • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000
  6. Fai clic su Salva.

gcloud

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  1. Se nei metadati di progetto esistono già chiavi SSH, devi riaggiungerle ai metadati di progetto ogni volta che aggiungi una nuova chiave SSH utilizzando con gcloud CLI. Se non aggiungi di nuovo le chiavi esistenti, l'aggiunta di una nuova chiave cancella quelle esistenti.

    Per aggiungere una chiave SSH pubblica ai metadati di progetto utilizzando gcloud CLI, procedi nel seguente modo:

    1. Se il progetto dispone già di chiavi SSH pubbliche a livello di progetto, recuperale da metadati e aggiungerli a un nuovo file:

      1. Esegui l' Comando gcloud compute project-info describe per ottenere le chiavi SSH per il progetto:

        gcloud compute project-info describe \
         --format="value(commonInstanceMetadata[items][ssh-keys])"
        

        L'output è simile al seguente:

        username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
        
      2. Copia il valore dei metadati ssh-keys.

      3. Crea e apri un nuovo file di testo sulla workstation.

      4. Nel file, incolla l'elenco delle chiavi che hai appena copiato.

      5. Aggiungi la nuova chiave alla fine dell'elenco, in una delle seguenti opzioni formati:

        • Formato di una chiave senza data di scadenza:

          USERNAME:KEY_VALUE
        • Formato di una chiave con data di scadenza:

          USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

        Sostituisci quanto segue:

        • KEY_VALUE: valore della chiave SSH pubblica
        • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

          Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connessione alle istanze come utente root.

          Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

        • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000
      6. Salva e chiudi il file.

    2. Esegui gcloud compute project-info add-metadata per impostare il valore ssh-keys a livello di progetto:

      gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
      

      Sostituisci KEY_FILE con uno dei seguenti:

      • Il percorso del file creato nel passaggio precedente, se il progetto aveva chiavi SSH esistenti
      • Il percorso del nuovo file di chiave SSH pubblico, se il progetto non conteneva chiavi SSH esistenti

Terraform

Per aggiungere una chiave SSH pubblica ai metadati di progetto, utilizza la risorsa google_compute_project_metadata.

resource "google_compute_project_metadata" "default" {
  metadata = {
    ssh-keys = <<EOF
      dev:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT dev
      test:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT test
    EOF
  }
}

REST

Se nei metadati di progetto esistono già chiavi SSH, devi riaggiungerle ai metadati di progetto ogni volta che aggiungi una nuova chiave SSH utilizzando l'API Compute Engine. Se non aggiungi di nuovo le chiavi esistenti, l'aggiunta di una nuova chiave cancella quelle esistenti.

Per aggiungere una chiave SSH pubblica ai metadati di progetto utilizzando l'API Compute Engine, procedi nel seguente modo:

  1. Ottieni i valori fingerprint e ssh-keys dai metadati utilizzando il metodo Metodo projects.get

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID progetto.

    La risposta è simile alla seguente:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
    {
     "key": "ssh-keys",
     "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
    }
    ]
    ...
    
  2. Aggiungi il nuovo valore ssh-keys utilizzando il metodo projects.setCommonInstanceMetadata .

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY"
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • EXISTING_SSH_KEYS: il valore dell'attributo ssh-keys dalla risposta alla richiesta projects.get
    • FINGERPRINT: il valore dell'attributo fingerprint dalla risposta alla richiesta projects.get
    • NEW_SSH_KEY: la nuova chiave SSH in una delle seguenti formati:

      • Formato di una chiave senza data di scadenza:

        USERNAME:KEY_VALUE
      • Formato di una chiave con data di scadenza:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Sostituisci quanto segue:

      • KEY_VALUE: valore della chiave SSH pubblica
      • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

        Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connessione alle istanze come utente root.

        Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

      • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000

Aggiungi chiavi SSH ai metadati dell'istanza

Puoi aggiungere una chiave SSH pubblica ai metadati dell'istanza quando crei una VM dopo aver creato una VM.

Aggiungi chiavi SSH ai metadati dell'istanza durante la creazione della VM

Puoi aggiungere chiavi SSH ai metadati dell'istanza durante la creazione della VM, utilizzando Console Google Cloud, gcloud CLI o API Compute Engine.

Console

Per creare una VM e aggiungere una chiave SSH pubblica ai metadati dell'istanza utilizzando la console Google Cloud, segui questi passaggi:

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

    Vai a Crea un'istanza

  2. Specifica i dettagli della VM.

  3. Espandi la sezione Opzioni avanzate e procedi nel seguente modo:

    1. Espandi la sezione Sicurezza.

    2. Seleziona Aggiungi chiavi SSH generate manualmente.

    3. Fai clic su Aggiungi elemento.

    4. Aggiungi la chiave pubblica nella casella di testo. La chiave deve trovarsi in uno dei seguenti seguenti formati:

      • Formato di una chiave senza data di scadenza:

        KEY_VALUE USERNAME
      • Formato di una chiave con data di scadenza:

        KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Sostituisci quanto segue:

      • KEY_VALUE: valore della chiave SSH pubblica
      • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

        Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connettiti alle VM Linux come utente root.

        Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

      • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000
  4. Per creare e avviare la VM, fai clic su Crea.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Creare una VM e aggiungere contemporaneamente una chiave SSH pubblica ai metadati dell'istanza. con gcloud CLI, utilizza Comando gcloud compute instances create:

    gcloud compute instances create VM_NAME \
       --metadata=ssh-keys=PUBLIC_KEY
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della nuova VM
    • PUBLIC_KEY: la tua chiave SSH pubblica, in una delle seguenti formati:

      • Formato di una chiave senza data di scadenza:

        USERNAME:KEY_VALUE
      • Formato di una chiave con data di scadenza:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Sostituisci quanto segue:

      • KEY_VALUE: valore della chiave SSH pubblica
      • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

        Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connessione alle istanze come utente root.

        Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

      • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000

    Puoi aggiungere più chiavi SSH utilizzando il metodo --metadata-from-file=ssh-keys=FILE_PATH flag. Nel file, aggiungi un elenco di nomi utente e chiavi SSH pubbliche in una delle formati precedenti.

Terraform

Per aggiungere una chiave SSH pubblica ai metadati dell'istanza, utilizza la risorsa google_compute_instance.

resource "google_compute_instance" "default" {
  name         = "my-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-1404-trusty-v20160627"
    }
  }

  # Local SSD disk
  scratch_disk {
    interface = "SCSI"
  }

  network_interface {
    network = "default"
    access_config {}
  }
  metadata = {
    "ssh-keys" = <<EOT
      dev:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT dev
      test:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT test
     EOT
  }
}

REST

Per creare una VM e aggiungere una chiave SSH pubblica ai metadati dell'istanza utilizzando Compute Engine, crea una richiesta POST Metodo instances.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Sostituisci quanto segue:

  • PROJECT_ID: ID progetto
  • ZONE: la zona della VM

Nel corpo della richiesta, fornisci i nomi utente e le chiavi SSH pubbliche nella items proprietà:

...
{
 "items": [
    {
     "key": "ssh-keys",
     "value": "PUBLIC_KEY"
    }
   ]
}
...

Sostituisci PUBLIC_KEY con la tua chiave pubblica in una sola dei seguenti formati:

  • Formato di una chiave senza data di scadenza:

    USERNAME:KEY_VALUE
  • Formato di una chiave con data di scadenza:

    USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

Sostituisci quanto segue:

  • KEY_VALUE: valore della chiave SSH pubblica
  • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

    Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connessione alle istanze come utente root.

    Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

  • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000

Puoi aggiungere più chiavi SSH aggiungendo \n tra le chiavi.

Aggiungere chiavi SSH ai metadati dell'istanza dopo la creazione della VM

Puoi aggiungere chiavi SSH ai metadati dell'istanza dopo la creazione della VM, utilizzando Console Google Cloud, gcloud CLI o API Compute Engine.

Console

Per aggiungere una chiave SSH pubblica ai metadati dell'istanza utilizzando Nella console Google Cloud, segui questi passaggi:

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

    Vai a Istanze VM

  2. Fai clic sul nome della VM per la quale vuoi aggiungere una chiave SSH.

  3. Fai clic su Modifica.

  4. In Chiavi SSH, fai clic su Aggiungi elemento.

  5. Aggiungi la chiave pubblica nella casella di testo. La chiave deve trovarsi in uno dei seguenti seguenti formati:

    • Formato di una chiave senza data di scadenza:

      KEY_VALUE USERNAME
    • Formato di una chiave con data di scadenza:

      KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

    Sostituisci quanto segue:

    • KEY_VALUE: valore della chiave SSH pubblica
    • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

      Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connettiti alle VM Linux come utente root.

      Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

    • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000
  6. Fai clic su Salva.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Se sono presenti chiavi SSH nei metadati dell'istanza, devi riaggiungerle metadati dell'istanza ogni volta che aggiungi una nuova chiave SSH utilizzando con gcloud CLI. Se non riaggiungi le chiavi esistenti, aggiungi una una nuova chiave cancella quelle esistenti.

    Per aggiungere una chiave SSH pubblica ai metadati dell'istanza utilizzando gcloud CLI, segui questi passaggi:

    1. Se la tua VM ha già chiavi SSH pubbliche a livello di istanza, recuperale da metadati e aggiungerli a un nuovo file:

      1. Esegui il comando gcloud compute instances describe per ottenere i metadati per la VM:

        gcloud compute instances describe VM_NAME
        

        Sostituisci VM_NAME con il nome della VM per la quale devi aggiungere o rimuovere le chiavi SSH pubbliche.

        L'output è simile al seguente:

        ...
        metadata:
        ...
        - key: ssh-keys
         value: |-
           cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...
           baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}
        ...
        
      2. Copia il valore dei metadati ssh-keys.

      3. Crea e apri un nuovo file di testo sulla workstation.

      4. Nel file, incolla l'elenco delle chiavi che hai appena copiato.

      5. Aggiungi la nuova chiave alla fine dell'elenco, in una delle seguenti opzioni formati:

      • Formato di una chiave senza data di scadenza:

        USERNAME:KEY_VALUE
      • Formato di una chiave con data di scadenza:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Sostituisci quanto segue:

      • KEY_VALUE: valore della chiave SSH pubblica
      • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

        Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connessione alle istanze come utente root.

        Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

      • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000
      1. Salva e chiudi il file.
    2. Esegui il comando gcloud compute instances add-metadata per impostare il valore ssh-keys:

      gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
      

      Sostituisci quanto segue:

      • VM_NAME: la VM a cui vuoi aggiungere Chiave SSH per
      • KEY_FILE con uno dei seguenti:
      • Il percorso del file che hai creato nel passaggio precedente, se la VM aveva chiavi SSH esistenti
      • Il percorso del nuovo file di chiave SSH pubblico, nel caso in cui la VM non fosse presente chiavi SSH esistenti

REST

Se sono presenti chiavi SSH nei metadati dell'istanza, devi riaggiungerle metadati dell'istanza ogni volta che aggiungi una nuova chiave SSH utilizzando l'API Compute Engine. Se non riaggiungi le chiavi esistenti, aggiungi una una nuova chiave cancella quelle esistenti.

Per aggiungere una chiave SSH pubblica ai metadati dell'istanza utilizzando Per l'API Compute Engine, segui questi passaggi:

  1. Ottieni i valori fingerprint e ssh-keys dai metadati utilizzando il metodo instances.get .

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • ZONE: la zona della VM in cui aggiungere un SSH chiave
    • VM_NAME: la VM per cui stai aggiungendo una chiave SSH

    La risposta è simile alla seguente:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
    {
     "key": "ssh-keys",
      "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
    }
    ]
    ...
    
  2. Aggiungi il nuovo valore ssh-keys utilizzando il metodo instances.setMetadata .

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY"
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • EXISTING_SSH_KEYS: il valore dell'attributo ssh-keys dalla risposta alla richiesta instances.get
    • FINGERPRINT: fingerprint dalla risposta alla richiesta projects.get
    • NEW_SSH_KEY: la nuova chiave SSH in una delle seguenti formati:

      • Formato di una chiave senza data di scadenza:

        USERNAME:KEY_VALUE
      • Formato di una chiave con data di scadenza:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Sostituisci quanto segue:

      • KEY_VALUE: valore della chiave SSH pubblica
      • USERNAME: il tuo nome utente. Ad esempio: cloudysanfrancisco o cloudysanfrancisco_gmail_com.

        Per le VM Linux, il USERNAME non può essere root, a meno che tu configurare la VM per consentire l'accesso root. Per ulteriori informazioni, vedi Connessione alle istanze come utente root.

        Per le VM Windows che utilizzano Active Directory (AD), il nome utente deve essere anteposto ad AD dominio nel formato DOMAIN\. Ad esempio, l'utente cloudysanfrancisco nell'annuncio ad.example.com ha un USERNAME di example\cloudysanfrancisco.

      • EXPIRE_TIME: data di scadenza della chiave, tra ISO 8601 formato. Ad esempio: 2021-12-04T20:12:00+0000

Passaggi successivi