Ajouter des clés SSH aux VM


Ce document explique comment ajouter des clés SSH aux instances de machines virtuelles (VM) qui utilisent OS Login et aux VM qui utilisent des clés SSH basées sur les métadonnées. Si vous ou votre administrateur d'organisation n'avez pas activé OS Login, vos VM utilisent des clés SSH basées sur les métadonnées.

Avant de commencer

  • Pour en savoir plus sur la gestion des accès à vos VM Compute Engine, consultez la page Choisir une méthode d'accès.
  • Si ce n'est pas déjà fait, créez une paire de clés SSH.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:

    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

      Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

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

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Pour en savoir plus, consultez Set up authentication for a local development environment.

      REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

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

        gcloud init

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Ajouter des clés aux VM qui utilisent OS Login

Les VM qui utilisent OS Login acceptent les clés SSH associées à votre compte Google. Vous pouvez associer une clé SSH publique à votre compte Google en utilisant gcloud CLI ou l'API OS Login. Si vous êtes administrateur de votre organisation, vous pouvez ajouter des clés SSH aux comptes utilisateur en utilisant l'API Directory.

Lorsque vous ajoutez des clés SSH à votre compte Google, Compute Engine génère un nom d'utilisateur pour vous en combinant le nom d'utilisateur et le domaine de l'adresse e-mail associée à votre compte Google. Par exemple, si votre adresse e-mail est cloudysanfrancisco@gmail.com, votre nom d'utilisateur est cloudysanfrancisco_gmail_com. Si vous ajoutez une clé SSH dans un projet situé en dehors de votre organisation, votre nom d'utilisateur porte le préfixe ext_ (par exemple, ext_cloudysanfrancisco_gmail_com). L'administrateur de votre organisation peut personnaliser votre nom d'utilisateur en utilisant l'API Directory. Si vous avez déjà configuré un nom d'utilisateur, Compute Engine l'utilise lorsque vous ajoutez des clés 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. Pour ajouter une clé SSH publique à votre compte, utilisez la commande gcloud compute os-login ssh-keys add :

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

    Remplacez les éléments suivants :

    • KEY_FILE_PATH : chemin d'accès à la clé SSH publique sur votre poste de travail. La clé doit utiliser le format public-openssh.
    • PROJECT : projet dans lequel vous souhaitez utiliser votre clé SSH (facultatif). Spécifiez ce champ pour utiliser votre clé SSH dans un projet extérieur à votre organisation ou si vous n'êtes pas membre d'une organisation Cloud Identity.
    • EXPIRE_TIME : (facultatif) délai d'expiration de la clé SSH.

      Par exemple, si vous spécifiez 30m, la clé SSH expire au bout de 30 minutes.

      Cette option utilise les unités suivantes :

      • s pour les secondes
      • m pour les minutes
      • h pour les heures
      • d pour les jours

Terraform

Pour ajouter une clé SSH publique à votre compte, utilisez la ressource google_client_openid_userinfo avec la ressource 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

Pour ajouter une clé SSH publique à votre compte, utilisez la méthode users.importSshPublicKey de l'API OS Login :

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

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

Remplacez les éléments suivants :

  • ACCOUNT_EMAIL : adresse e-mail associée à votre compte
  • SSH_KEY : clé publique à appliquer au compte
  • EXPIRATION_TIMESTAMP : délai d'expiration de la clé en microsecondes depuis l'epoch (1 seconde = 106 microsecondes)

Ajouter des clés SSH aux VM qui utilisent des clés SSH basées sur des métadonnées

Les VM qui n'utilisent pas OS Loginstockent les clés SSH dans les métadonnées de projet et d'instance Compute Engine. Si OS Login est activé pour une VM, l'agent invité de la VM ignore les clés stockées dans les métadonnées.

Vous pouvez utiliser des clés SSH stockées dans les métadonnées du projet pour accéder à toutes les VM d'un projet. Vous pouvez utiliser des clés SSH stockées dans les métadonnées d'instance pour accéder à des VM individuelles.

Compute Engine ne supprime pas automatiquement les clés SSH expirées des métadonnées au moment de l'expiration, mais ces clés ne peuvent pas être utilisées pour établir de nouvelles connexions aux VM. Si vous souhaitez supprimer des clés expirées des métadonnées, consultez la section Supprimer les clés SSH des VM qui utilisent des clés basées sur les métadonnées.

Vous pouvez ajouter une clé SSH publique aux métadonnées du projet ou de l'instance de VM à l'aide de la console Google Cloud, de gcloud CLI ou de REST.

Ajouter des clés SSH aux métadonnées du projet

Vous pouvez ajouter une clé SSH publique aux métadonnées de projet pour accéder à toutes les VM d'un projet, à l'exception des VM qui bloquent les clés SSH à l'échelle du projet. Pour en savoir plus sur le blocage des clés SSH à l'échelle du projet, consultez la section Bloquer des clés SSH pour les VM qui utilisent des clés SSH basées sur les métadonnées.

Console

Pour ajouter une clé SSH publique aux métadonnées du projet à l'aide de la console Google Cloud, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Métadonnées.

    Accéder à la page "Métadonnées"

  2. Cliquez sur l'onglet Clés SSH.

  3. Cliquez sur Modifier.

  4. Cliquez sur Ajouter un élément.

  5. Dans le champ Clé SSH qui s'affiche, ajoutez votre clé SSH publique. La clé doit être dans l'un des formats suivants :

    • Format d'une clé sans délai d'expiration :

      KEY_VALUE USERNAME
    • Format d'une clé avec un délai d'expiration :

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

    Remplacez les éléments suivants :

    • KEY_VALUE : valeur de la clé SSH publique
    • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

      Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter à des VM en tant qu'utilisateur racine.

      Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.
  6. Cliquez sur Enregistrer.

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. Si les métadonnées de projet contiennent des clés SSH, vous devez les rajouter chaque fois que vous ajoutez une clé SSH à l'aide de gcloud CLI. Si vous n'ajoutez pas à nouveau vos clés existantes, l'ajout d'une nouvelle clé efface les clés existantes.

    Pour ajouter une clé SSH publique aux métadonnées du projet à l'aide de gcloud CLI, procédez comme suit :

    1. Si votre projet possède déjà des clés SSH publiques à l'échelle du projet, récupérez-les à partir des métadonnées et ajoutez-les dans un nouveau fichier :

      1. Exécutez la commande gcloud compute project-info describe pour obtenir les clés SSH du projet :

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

        Le résultat ressemble à ce qui suit :

        username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
        
      2. Copiez la valeur de métadonnées ssh-keys.

      3. Créez et ouvrez un fichier texte sur votre poste de travail local.

      4. Dans le fichier, collez la liste de clés que vous venez de copier.

      5. Ajoutez votre nouvelle clé à la fin de la liste, dans l'un des formats suivants :

        • Format d'une clé sans délai d'expiration :

          USERNAME:KEY_VALUE
        • Format d'une clé avec un délai d'expiration :

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

        Remplacez les éléments suivants :

        • KEY_VALUE : valeur de la clé SSH publique
        • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

          Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter aux instances en tant qu'utilisateur racine.

          Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

        • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.
      6. Enregistrez et fermez le fichier.

    2. Exécutez la commande gcloud compute project-info add-metadata pour définir la valeur ssh-keys à l'échelle du projet :

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

      Remplacez KEY_FILE par l'un des éléments suivants :

      • Chemin d'accès au fichier que vous avez créé à l'étape précédente, si le projet comportait des clés SSH existantes.
      • Chemin d'accès à votre nouveau fichier de clé SSH publique, si le projet ne disposait pas de clés SSH existantes.

Terraform

Pour ajouter une clé SSH publique aux métadonnées de votre projet, utilisez la ressource 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

S'il existe déjà des clés SSH dans les métadonnées du projet, vous devez les ajouter à nouveau aux métadonnées de projet chaque fois que vous ajoutez une nouvelle clé SSH à l'aide de l'API Compute Engine. Si vous n'ajoutez pas à nouveau vos clés existantes, l'ajout d'une nouvelle clé efface les clés existantes.

Pour ajouter une clé SSH publique aux métadonnées du projet à l'aide de l'API Compute Engine, procédez comme suit :

  1. Récupérez les valeurs fingerprint et ssh-keys des métadonnées à l'aide de la méthode projects.get.

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

    Remplacez PROJECT_ID par l'ID du projet.

    La réponse est semblable à ce qui suit :

    ...
    "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. Ajoutez la nouvelle valeur ssh-keys à l'aide de la méthode 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"
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • EXISTING_SSH_KEYS : valeur de la clé ssh-keys de la réponse de la requête projects.get
    • FINGERPRINT : valeur de fingerprint à partir de la réponse de la requête projects.get
    • NEW_SSH_KEY : nouvelle clé SSH, dans l'un des formats suivants :

      • Format d'une clé sans délai d'expiration :

        USERNAME:KEY_VALUE
      • Format d'une clé avec un délai d'expiration :

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

      Remplacez les éléments suivants :

      • KEY_VALUE : valeur de la clé SSH publique
      • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter aux instances en tant qu'utilisateur racine.

        Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.

Ajouter des clés SSH aux métadonnées d'une instance

Vous pouvez ajouter une clé SSH publique aux métadonnées d'instance lorsque vous créez une VM ou après la création d'une VM.

Ajouter des clés SSH aux métadonnées d'une instance lors de la création d'une VM

Vous pouvez ajouter des clés SSH aux métadonnées d'une instance lors de la création de la VM à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine.

Console

Pour créer une VM et ajouter simultanément une clé SSH publique aux métadonnées d'instance à l'aide de la console Google Cloud, procédez comme suit :

  1. Accédez à la page Créer une instance dans Google Cloud Console.

    Accéder à la page Créer une instance

  2. Spécifiez les détails de la VM.

  3. Développez la section Options avancées et procédez comme suit :

    1. Développez la section Sécurité.

    2. Sélectionnez Ajouter des clés SSH générées manuellement.

    3. Cliquez sur Ajouter un élément.

    4. Ajoutez votre clé publique dans la zone de texte. La compression doit être dans l'un des formats suivants :

      • Format d'une clé sans délai d'expiration :

        KEY_VALUE USERNAME
      • Format d'une clé avec un délai d'expiration :

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

      Remplacez les éléments suivants :

      • KEY_VALUE : valeur de la clé SSH publique
      • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter à des VM en tant qu'utilisateur racine.

        Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.
  4. Pour créer et démarrer la VM, cliquez sur Créer.

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. Pour créer une VM et ajouter simultanément une clé SSH publique aux métadonnées d'instance à l'aide de gcloud CLI, utilisez la commande gcloud compute instances create :

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

    Remplacez les éléments suivants :

    • VM_NAME : nom de la nouvelle VM
    • PUBLIC_KEY : clé SSH publique, dans l'un des formats suivants :

      • Format d'une clé sans délai d'expiration :

        USERNAME:KEY_VALUE
      • Format d'une clé avec un délai d'expiration :

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

      Remplacez les éléments suivants :

      • KEY_VALUE : valeur de la clé SSH publique
      • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter aux instances en tant qu'utilisateur racine.

        Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.

    Vous pouvez ajouter plusieurs clés SSH à l'aide de l'option --metadata-from-file=ssh-keys=FILE_PATH. Dans le fichier, ajoutez une liste de noms d'utilisateur et de clés SSH publiques dans l'un des formats précédents.

Terraform

Pour ajouter une clé SSH publique aux métadonnées de votre instance, utilisez la ressource 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

Pour créer une VM et ajouter simultanément une clé SSH publique aux métadonnées d'instance à l'aide de Compute Engine, envoyez une requête POST à la méthode instances.insert :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • ZONE : zone de la VM

Dans le corps de la requête, indiquez les noms d'utilisateur et les clés SSH publiques dans la propriété items :

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

Remplacez PUBLIC_KEY par votre clé publique, dans l'un des formats suivants :

  • Format d'une clé sans délai d'expiration :

    USERNAME:KEY_VALUE
  • Format d'une clé avec un délai d'expiration :

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

Remplacez les éléments suivants :

  • KEY_VALUE : valeur de la clé SSH publique
  • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

    Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter aux instances en tant qu'utilisateur racine.

    Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

  • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.

Vous pouvez ajouter plusieurs clés SSH en ajoutant \n entre les clés.

Ajouter des clés SSH aux métadonnées d'une instance après la création d'une VM

Vous pouvez ajouter des clés SSH aux métadonnées d'instance après la création de la VM à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Compute Engine.

Console

Pour ajouter une clé SSH publique aux métadonnées d'instance à l'aide de la console Google Cloud, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur le nom de la VM pour laquelle vous souhaitez ajouter une clé SSH.

  3. Cliquez sur Modifier.

  4. Sous Clés SSH, cliquez sur Ajouter un élément.

  5. Ajoutez votre clé publique dans la zone de texte. La compression doit être dans l'un des formats suivants :

    • Format d'une clé sans délai d'expiration :

      KEY_VALUE USERNAME
    • Format d'une clé avec un délai d'expiration :

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

    Remplacez les éléments suivants :

    • KEY_VALUE : valeur de la clé SSH publique
    • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

      Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter à des VM en tant qu'utilisateur racine.

      Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.
  6. Cliquez sur Enregistrer.

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. Si les métadonnées d'instance contiennent des clés SSH, vous devez les rajouter chaque fois que vous ajoutez une clé SSH à l'aide de gcloud CLI. Si vous n'ajoutez pas à nouveau vos clés existantes, l'ajout d'une nouvelle clé efface les clés existantes.

    Pour ajouter une clé SSH publique aux métadonnées d'instance à l'aide de gcloud CLI, procédez comme suit :

    1. Si votre VM possède déjà des clés SSH publiques au niveau de l'instance, récupérez-les à partir des métadonnées et ajoutez-les à un nouveau fichier :

      1. Exécutez la commande gcloud compute instances describe pour obtenir les métadonnées de la VM :

        gcloud compute instances describe VM_NAME
        

        Remplacez VM_NAME par le nom de la VM pour laquelle vous devez ajouter ou supprimer des clés SSH publiques.

        Le résultat ressemble à ce qui suit :

        ...
        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. Copiez la valeur de métadonnées ssh-keys.

      3. Créez et ouvrez un fichier texte sur votre poste de travail local.

      4. Dans le fichier, collez la liste de clés que vous venez de copier.

      5. Ajoutez votre nouvelle clé à la fin de la liste, dans l'un des formats suivants :

      • Format d'une clé sans délai d'expiration :

        USERNAME:KEY_VALUE
      • Format d'une clé avec un délai d'expiration :

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

      Remplacez les éléments suivants :

      • KEY_VALUE : valeur de la clé SSH publique
      • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter aux instances en tant qu'utilisateur racine.

        Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.
      1. Enregistrez et fermez le fichier.
    2. Exécutez la commande gcloud compute instances add-metadata pour définir la valeur ssh-keys :

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

      Remplacez les éléments suivants :

      • VM_NAME : VM pour laquelle vous souhaitez supprimer la clé SSH.
      • KEY_FILE par l'un des éléments suivants :
      • Chemin d'accès au fichier que vous avez créé à l'étape précédente, si la VM disposait de clés SSH.
      • Chemin d'accès à votre nouveau fichier de clé SSH publique, si le projet ne disposait pas de clés SSH existantes.

REST

Si les métadonnées d'instance contiennent des clés SSH, vous devez les rajouter chaque fois que vous ajoutez une clé SSH à l'aide de l'API Compute Engine. Si vous n'ajoutez pas à nouveau vos clés existantes, l'ajout d'une nouvelle clé efface les clés existantes.

Pour ajouter une clé SSH publique aux métadonnées d'instance à l'aide de l'API Compute Engine, procédez comme suit :

  1. Récupérez les valeurs fingerprint et ssh-keys des métadonnées à l'aide de la méthode instances.get.

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

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • ZONE : zone de la VM pour laquelle vous ajoutez une clé SSH.
    • VM_NAME : VM pour laquelle vous ajoutez une clé SSH.

    La réponse est semblable à ce qui suit :

    ...
    "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. Ajoutez la nouvelle valeur ssh-keys à l'aide de la méthode 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"
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • EXISTING_SSH_KEYS : valeur de la clé ssh-keys de la réponse de la requête instances.get
    • FINGERPRINT : fingerprint à partir de la réponse de la requête projects.get
    • NEW_SSH_KEY : nouvelle clé SSH, dans l'un des formats suivants :

      • Format d'une clé sans délai d'expiration :

        USERNAME:KEY_VALUE
      • Format d'une clé avec un délai d'expiration :

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

      Remplacez les éléments suivants :

      • KEY_VALUE : valeur de la clé SSH publique
      • USERNAME : votre nom d'utilisateur. Par exemple, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Pour les VM Linux, USERNAME ne peut pas être défini sur root, sauf si vous configurez votre VM pour autoriser la connexion racine. Pour en savoir plus, consultez la section Se connecter aux instances en tant qu'utilisateur racine.

        Pour les VM Windows qui utilisent Active Directory (AD), le nom d'utilisateur doit être précédé du domaine AD, au format DOMAIN\. Par exemple, l'utilisateur cloudysanfrancisco du domaine AD ad.example.com possède un USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME : heure d'expiration de la clé, au format ISO 8601. Par exemple : 2021-12-04T20:12:00+0000.

Étape suivante