Gérer des clés SSH dans les métadonnées

Ce guide explique comment contrôler l'accès aux instances Linux en créant manuellement des clés SSH et en modifiant les métadonnées des clés SSH publiques.

Vous pouvez également vous connecter aux instances via la console Google Cloud Platform, où Compute Engine gère automatiquement le cycle de vie complet de vos clés, ou à l'aide de la commande gcloud dans le SDK, où Compute Engine configure pour vous les métadonnées de clé SSH persistantes.

Si vous êtes un utilisateur avancé qui a besoin de gérer les clés SSH manuellement, reportez-vous à la section Gérer les accès aux instances à l'aide de OS Login. Si vous gérez vos clés SSH en utilisant OS Login sur des instances, les configurations de clé SSH basées sur des métadonnées sur ces instances sont désactivées.

Avant de commencer

Autorisations requises pour cette tâche

Pour effectuer cette tâche, vous devez disposer des autorisations suivantes.

  • compute.instances.setMetadata sur l'instance si vous y définissez des métadonnées ;
  • compute.projects.setCommonInstanceMetadata sur le projet si vous définissez des métadonnées à l'échelle du projet ;
  • iam.serviceAccounts.actAs sur le projet si vous définissez des métadonnées à l'échelle du projet.

Risques liés à la gestion manuelle des clés

Si vous créez et gérez vous-même des clés SSH publiques via la console GCP, l'outil de ligne de commande gcloud ou l'API, vous devez noter les clés utilisées et supprimer les clés SSH publiques pour les utilisateurs qui ne devraient pas y avoir accès. Par exemple, si un membre de l'équipe quitte votre projet, supprimez ses clés SSH publiques à partir des métadonnées afin qu'il ne puisse plus accéder à vos instances.

En outre, une mauvaise spécification de votre outil gcloud ou de vos appels d'API peut potentiellement effacer toutes les clés SSH publiques de votre projet ou de vos instances, ce qui interromprait les connexions pour les membres de votre projet.

Si vous n'êtes pas certain de vouloir gérer vos propres clés, utilisez plutôt les outils Compute Engine pour vous connecter à vos instances.

Présentation

La création et la gestion des clés SSH vous permettent d'autoriser l'accès à une instance Linux via des outils tiers.

Une clé SSH comprend les fichiers suivants :

  • Un fichier de clé SSH publique, appliqué aux métadonnées au niveau de l'instance ou aux métadonnées à l'échelle du projet.
  • Un fichier de clé SSH privée, stocké par l'utilisateur sur ses appareils locaux.

Si un utilisateur présente sa clé SSH privée, il peut utiliser un outil tiers pour se connecter à toute instance configurée avec le fichier de clé SSH publique correspondante, même s'il n'est pas membre de votre projet Google Cloud Platform. Par conséquent, vous pouvez contrôler l'accès aux instances pour l'utilisateur en modifiant les métadonnées de clés SSH publiques pour une ou plusieurs instances.

Pour modifier les métadonnées de clés SSH publiques :

  1. Choisissez l'outil que vous utiliserez pour modifier les métadonnées :

  2. Pour ajouter des utilisateurs à une instance Linux, préparez leurs clés SSH publiques en procédant comme suit :

  3. Modifiez les métadonnées de clés SSH publiques pour ajouter ou supprimer des utilisateurs d'une instance Linux.

  4. Connectez-vous à votre instance Linux via un outil tiers pour vous assurer que toutes les clés SSH publiques sont ajoutées ou supprimées correctement. Un utilisateur ne peut se connecter à une instance que si sa clé SSH publique est disponible pour l'instance via le serveur de métadonnées et s'il possède la clé SSH privée correspondante.

Créer une clé SSH

Si vous ne disposez pas d'un fichier de clé SSH privée et d'un fichier de clé SSH publique correspondante que vous pouvez utiliser, générez une nouvelle clé SSH. Si vous souhaitez utiliser une clé SSH existante, trouvez le fichier de clé SSH publique.

Linux et macOS

Sur les postes de travail Linux ou macOS, vous pouvez générer une clé à l'aide de l'outil ssh-keygen.

  1. Ouvrez un terminal sur votre poste de travail, puis exécutez la commande ssh-keygen pour générer une clé. Utilisez l'indicateur -C pour ajouter un commentaire avec votre nom d'utilisateur.

    ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
    

    où :

    • [KEY_FILENAME] est le nom que vous souhaitez utiliser pour vos fichiers de clés SSH. Par exemple, le nom de fichier my-ssh-key génère un fichier de clé privée nommé my-ssh-key et un fichier de clé publique nommé my-ssh-key.pub.
    • [USERNAME] est le nom d'utilisateur de l'utilisateur qui se connecte à l'instance.

    Cette commande génère un fichier de clé SSH privée et une clé SSH publique correspondante avec la structure suivante :

    ssh-rsa [KEY_VALUE] [USERNAME]
    

    où :

    • [KEY_VALUE] est la valeur de la clé que vous avez générée ;
    • [USERNAME] est l'utilisateur pour lequel cette clé s'applique.
  2. Limitez l'accès à votre clé privée pour que personne d'autre ne puisse la lire ni la modifier.

    chmod 400 ~/.ssh/[KEY_FILENAME]
    

    [KEY_FILENAME] est le nom que vous avez utilisé pour vos fichiers de clés SSH.

Répétez cette procédure pour chaque utilisateur ayant besoin d'une nouvelle clé. Trouvez ensuite les clés SSH publiques que vous avez créées, ainsi que les clés SSH publiques existantes que vous souhaitez ajouter à un projet ou à une instance.

Windows

Windows n'a pas d'outil intégré pour générer des clés SSH. Vous devez donc utiliser un outil tiers pour générer des clés SSH si vous êtes sur un poste de travail Windows. Voici comment générer des clés SSH avec l'outil PuTTYgen.

  1. Téléchargez puttygen.exe.

  2. Exécutez PuTTYgen. Pour cet exemple, exécutez simplement le fichier puttygen.exe que vous avez téléchargé. Une fenêtre permettant de configurer les paramètres de génération de vos clés s'affiche.

  3. Cliquez sur Generate (Générer) et suivez les instructions à l'écran pour générer une nouvelle clé. Dans la plupart des cas, les paramètres par défaut peuvent être conservés, mais vous devez générer des clés avec au moins 2 048 bits. Une fois la clé générée, l'outil affiche la valeur de votre clé publique.

  4. Dans la section Key comment (Commentaire sur la clé), remplacez le texte existant par le nom de l'utilisateur pour lequel vous souhaitez appliquer la clé.

  5. (Facultatif) Remplissez le champ Key passphrase (Phrase secrète pour la clé) pour protéger la clé.

  6. Cliquez sur Save private key (Enregistrer la clé privée) pour écrire votre clé privée dans un fichier avec une extension .ppk.

  7. Cliquez sur Save public key (Enregistrer la clé publique) pour écrire votre clé publique dans un fichier afin de l'utiliser ultérieurement. Laissez la fenêtre PuTTYgen ouverte pour le moment.

    La clé publique correctement formatée est affichée en haut de l'écran de PuTTYgen :

    Capture d'écran de la clé publique PuTTYgen

    Cette clé publique présente la structure suivante :

    ssh-rsa [KEY_VALUE] [USERNAME]
    

    où :

    • [KEY_VALUE] est la valeur de la clé que vous avez générée ;
    • [USERNAME] est l'utilisateur pour lequel cette clé s'applique.

Répétez cette procédure pour chaque utilisateur nécessitant la création d'une clé. Si vous possédez d'autres clés SSH publiques pour les utilisateurs que vous souhaitez ajouter à un projet ou à une instance, trouvez maintenant leurs clés SSH publiques. Sinon, formatez les clés SSH publiques que vous avez créées.

Trouver une clé SSH

Vous pouvez avoir besoin de trouver une clé SSH pour plusieurs raisons. Par exemple, si vous souhaitez ajouter la clé SSH publique d'un utilisateur à un projet ou à une instance, vous devez accéder au fichier de clé publique correspondant à sa clé. Vous pouvez également avoir besoin de trouver votre fichier de clé SSH privée pour vous connecter à une instance Linux.

Lorsqu'une clé SSH est créée, elle est enregistrée dans un emplacement par défaut. Les emplacements et les noms par défaut de vos fichiers de clé SSH publique et privée dépendent des outils que vous avez utilisés pour la création de cette clé.

Linux et macOS

Si vous avez créé une clé sur un poste de travail Linux ou macOS à l'aide de l'outil ssh-keygen, votre clé est enregistrée aux emplacements suivants :

  • Fichier de clé publique : ~/.ssh/[KEY_FILENAME].pub ;
  • Fichier de clé privée : ~/.ssh/[KEY_FILENAME].

[KEY_FILENAME] est le nom de fichier de la clé SSH, défini au moment de la création de la clé.

Pour ajouter ou supprimer la clé SSH publique des métadonnées de projet ou d'instance, formatez le fichier de clé SSH publique.

Windows

Si vous avez créé une clé sur un poste de travail Windows à l'aide de l'outil PuTTYgen, vos fichiers de clés publique et privée sont enregistrés aux formats suivants dans les emplacements que vous avez désignés :

  • Clé publique : [PUBLIC_KEY_FILENAME] ;
  • Clé privée : [PRIVATE_KEY_FILENAME].ppk.

[PUBLIC_KEY_FILENAME] et [PRIVATE_KEY_FILENAME] sont les noms de fichiers des clés SSH publique et privée, qui ont été définis lors du premier enregistrement de la clé.

Par défaut, une clé SSH publique créée avec PuTTYgen doit avoir le format suivant :

ssh-rsa [KEY_VALUE] [USERNAME]

où :

  • [KEY_VALUE] est la valeur de la clé SSH publique ;
  • [USERNAME] est l'utilisateur de l'instance pour lequel vous avez appliqué la clé.

Pour afficher votre clé SSH publique PuTTYgen avec le bon format :

  1. Exécutez PuTTYgen. Si vous n'avez pas PuTTYgen, téléchargez et exécutez puttygen.exe.

  2. Cliquez sur Load (Charger) pour sélectionner et ouvrir votre fichier de clé SSH publique.

  3. Une fois le fichier de clé publique chargé, la valeur de la clé SSH publique correctement formatée s'affiche en haut de l'écran de PuTTYgen :

    Capture d'écran de la clé publique PuTTYgen

Pour ajouter ou supprimer la clé SSH publique des métadonnées de projet ou d'instance, formatez le fichier de clé SSH publique.

gcloud

Si vous vous êtes déjà connecté à une instance via l'outil gcloud, vos clés sont déjà générées et appliquées à votre projet ou à votre instance. Les fichiers de clés sont disponibles aux emplacements suivants :

  • Linux et macOS
    • Clé publique : $HOME/.ssh/google_compute_engine.pub
    • Clé privée : $HOME/.ssh/google_compute_engine
  • Windows :
    • Clé publique : C:\Users\[USERNAME]\.ssh\google_compute_engine.pub
    • Clé privée : C:\Users\[USERNAME]\.ssh\google_compute_engine

[USERNAME] est votre nom d'utilisateur sur votre poste de travail local.

Pour voir où sont appliquées vos clés SSH publiques, recherchez la clé publique dans les métadonnées du projet et les métadonnées de l'instance. Pour ajouter ou supprimer la clé SSH publique des métadonnées de projet ou d'instance, formatez le fichier de clé SSH publique.

Formater des fichiers de clés SSH publiques

Avant de pouvoir importer vos clés SSH publiques dans vos métadonnées d'instance ou de projet, vous devez vérifier le format de chaque fichier de clé SSH publique que vous souhaitez ajouter.

Selon l'outil que vous utilisez pour éditer les métadonnées, formatez vos clés pour qu'elles fonctionnent avec la console GCP, l'outil de ligne de commande gcloud ou les méthodes d'API. Vous pouvez également modifier vos clés SSH publiques pour ajouter, modifier ou supprimer un délai d'expiration.

Console

Pour vérifier le format d'une clé SSH publique :

  1. Trouvez et ouvrez le fichier de clé publique SSH.

  2. Vérifiez le format du fichier de clé SSH publique.

    • Si une clé SSH publique possède un délai d'expiration, elle doit se présenter au format suivant :

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

      où :

      • [KEY_VALUE] est la valeur de la clé SSH publique ;
      • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé.
      • [EXPIRE_TIME] est une valeur au format ISO 8601. Par exemple : 2018-12-04T20:12:00+0000.
    • Dans le cas contraire, la clé SSH publique doit se présenter au format suivant :

      ssh-rsa [KEY_VALUE] [USERNAME]

      où :

      • [KEY_VALUE] est la valeur de la clé SSH publique ;
      • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé.
  3. Si votre clé ne correspond pas à l'un des formats figurant ci-dessus ou si vous souhaitez ajouter, modifier ou supprimer une date d'expiration, suivez les instructions ci-dessous pour formater votre clé SSH publique. Sinon, laissez le fichier ouvert et ajoutez la clé SSH publique aux métadonnées du projet ou de l'instance.

Pour formater une clé SSH publique pour la console :

  1. Créez une copie de votre fichier de clé publique. Utilisez cette copie avec Compute Engine et conservez le fichier d'origine pour l'utiliser avec vos autres configurations SSH.

  2. Ouvrez la copie de votre fichier de clé publique.

  3. Modifiez le fichier de clé publique pour qu'il apparaisse au format suivant :

    ssh-rsa [KEY_VALUE] [USERNAME]

    où :

    • [KEY_VALUE] est la valeur de la clé SSH publique ;
    • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé.

    Si vous souhaitez que la clé SSH publique possède un délai d'expiration, modifiez le fichier pour qu'il apparaisse au format suivant :

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

    où :

    • [KEY_VALUE] est la valeur de la clé SSH publique ;
    • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé ;
    • [EXPIRE_TIME] est une valeur au format ISO 8601. Par exemple : 2018-12-04T20:12:00+0000.
  4. Enregistrez les modifications que vous avez apportées et laissez le fichier ouvert.

Vous êtes maintenant prêt à ajouter la clé SSH publique aux métadonnées du projet ou de l'instance.

gcloud ou API

Pour vérifier le format d'une clé SSH publique :

  1. Trouvez et ouvrez le fichier de clé publique SSH.

  2. Vérifiez le format du fichier de clé SSH publique.

    • Si une clé SSH publique possède un délai d'expiration, elle doit se présenter au format suivant :

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

      où :

      • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé ;
      • [KEY_VALUE] est la valeur de la clé SSH publique ;
      • [EXPIRE_TIME] est une valeur au format ISO 8601. Par exemple : 2018-12-04T20:12:00+0000.
    • Dans le cas contraire, la clé SSH publique doit se présenter au format suivant :

      [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]

      où :

      • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé ;
      • [KEY_VALUE] est la valeur de la clé SSH publique.
  3. Si votre clé ne correspond pas à l'un des formats figurant ci-dessus ou si vous souhaitez ajouter, modifier ou supprimer une date d'expiration, suivez les instructions ci-dessous pour formater votre clé SSH publique. Sinon, laissez le fichier ouvert et ajoutez la clé SSH publique aux métadonnées du projet ou de l'instance.

Pour formater une clé SSH publique pour l'outil gcloud ou l'API :

  1. Créez une copie de votre fichier de clé publique. Utilisez cette copie avec Compute Engine et conservez le fichier d'origine pour l'utiliser avec vos autres configurations SSH.

  2. Ouvrez la copie de votre fichier de clé publique. Par défaut, ce fichier doit être au format suivant :

    ssh-rsa [KEY_VALUE] [USERNAME]

    où :

    • [KEY_VALUE] est la valeur de la clé SSH publique ;
    • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé.
  3. Copiez le nom d'utilisateur situé à la fin du fichier, puis collez-le au début du fichier, suivi du signe "deux-points" (:). Ce fichier de clé SSH publique doit maintenant être au format suivant :

    [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]

    où :

    • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé ;
    • [KEY_VALUE] est la valeur de la clé SSH publique.
  4. Vous pouvez également définir le délai d'expiration de la clé en supprimant le second [USERNAME] et en ajoutant google-ssh à la fin du fichier de clé, suivi des champs userName et expireOn au format JSON.

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

    où :

    • [USERNAME] est l'utilisateur de cette clé SSH, spécifié lors de la création de la clé ;
    • [KEY_VALUE] est la valeur de la clé SSH publique ;
    • [EXPIRE_TIME] est une valeur au format ISO 8601. Par exemple : 2018-12-04T20:12:00+0000.
  5. Enregistrez les modifications que vous avez apportées et laissez le fichier ouvert.

Vous êtes maintenant prêt à ajouter la clé SSH publique aux métadonnées du projet ou de l'instance.

Modifier les métadonnées de clés SSH publiques

L'accès utilisateur à une instance Linux via des outils tiers est déterminé par les clés SSH publiques disponibles pour l'instance. Vous pouvez contrôler les clés SSH publiques disponibles pour une instance Linux en modifiant les métadonnées, qui stockent vos clés SSH publiques et les informations associées. Il existe trois types de métadonnées pour vos clés SSH publiques :

  • Clés SSH publiques à l'échelle du projet : utilisez ces métadonnées pour accorder aux utilisateurs un accès général et leur donner la possibilité de se connecter à la plupart des instances de votre projet.
  • Autoriser ou bloquer les clés SSH publiques à l'échelle du projet : utilisez cette valeur de métadonnées pour bloquer ou autoriser les clés SSH publiques à l'échelle du projet sur une instance spécifique. Par défaut, une instance accepte toutes les clés SSH publiques à l'échelle du projet. Bloquez les clés SSH publiques à l'échelle du projet si vous souhaitez n'autoriser que les utilisateurs disposant de clés SSH publiques au niveau de l'instance à utiliser celle-ci.
  • Clés SSH publiques au niveau de l'instance : utilisez ces métadonnées pour accorder aux utilisateurs un accès spécial et leur donner la possibilité de se connecter à une instance spécifique dans votre projet, même si cela implique de bloquer les clés SSH publiques à l'échelle du projet.

Ajouter ou supprimer des clés SSH publiques à l'échelle du projet

Utilisez des clés SSH publiques à l'échelle du projet pour accorder aux utilisateurs un accès général à une instance Linux. Les clés SSH publiques à l'échelle du projet permettent aux utilisateurs d'accéder à toutes les instances Linux d'un projet qui autorisent des clés SSH publiques à l'échelle du projet. Si une instance bloque les clés SSH publiques à l'échelle du projet, l'utilisateur ne pourra pas utiliser sa clé SSH publique à l'échelle du projet pour se connecter à l'instance, sauf si cette même clé SSH publique est également ajoutée aux métadonnées de l'instance.

Console

Pour ajouter ou supprimer des clés SSH publiques à l'échelle du projet depuis la console GCP, procédez comme suit :

  1. Dans la console Google Cloud Platform, accédez à la page "Métadonnées" de votre projet.

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

  2. Sous Clés SSH, cliquez sur Modifier.

  3. Modifiez les clés SSH publiques à l'échelle du projet :

    • Pour ajouter une clé SSH publique, cliquez sur Ajouter un élément. Une zone de texte s'ouvre.
    • Copiez et collez le contenu de votre fichier de clé SSH publique dans la zone de texte.

      Répétez cette procédure pour chaque clé SSH publique à ajouter.

    • Pour supprimer une clé SSH publique, cliquez sur le bouton de suppression situé juste à côté :

      Capture d'écran de la clé publique PuTTYgen

      Répétez cette procédure pour chaque clé SSH publique à supprimer.

  4. Lorsque vous avez terminé de modifier les clés SSH, cliquez sur Enregistrer.

gcloud

Pour ajouter ou supprimer des clés SSH publiques à l'échelle du projet avec l'outil gcloud, procédez comme suit :

  1. Si votre projet possède déjà des clés SSH publiques à l'échelle du projet, procurez-vous ces clés SSH publiques à partir des métadonnées :

    1. Procurez-vous les métadonnées existantes pour le projet :

      gcloud compute project-info describe
      
    2. À partir du résultat, trouvez la valeur de métadonnées ssh-keys :

      ...
      metadata:
        fingerprint: QCofVTHlggs=
        items:
        - key: ssh-keys
          value: |-
            [USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]
            [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
      ...
      

      où :

      • [USERNAME_1] et [USERNAME_2] sont les noms d'utilisateur de vos clés existantes ;
      • [EXISTING_KEY_VALUE_1] et [EXISTING_KEY_VALUE_2] sont des valeurs de clés publiques déjà appliquées à votre projet.
    3. Copiez les clés SSH publiques.

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

  3. Dans le fichier, créez une liste de toutes les clés SSH publiques que vous souhaitez ajouter ou conserver dans les métadonnées du projet. Si vous disposez de clés au niveau du projet, toutes les clés que vous n'incluez pas dans votre liste seront supprimées.

    Dans cet exemple, la liste ci-dessous va supprimer la clé pour [USERNAME_1], car sa clé SSH a été omise. Elle conservera également la clé SSH pour [USERNAME_2] et ajoutera la clé SSH pour [USERNAME_3], car leurs clés SSH sont incluses dans la liste.

    [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
    [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]
    

    où :

    • [USERNAME_1], [USERNAME_2] et [USERNAME_3] sont les noms d'utilisateur des clés SSH publiques ;
    • [EXISTING_KEY_VALUE_1] est une valeur de clé publique pour une clé SSH que vous souhaitez supprimer ;
    • [EXISTING_KEY_VALUE_2] est une valeur de clé publique pour une clé SSH que vous souhaitez conserver ;
    • [NEW_KEY_VALUE] est une valeur de clé publique pour une clé SSH que vous souhaitez ajouter.
  4. Enregistrez et fermez le fichier.

  5. Dans l'invite de commande, saisissez la commande compute project-info add-metadata pour définir la valeur ssh-keys à l'échelle du projet. Incluez l'indicateur --metadata-from-file et spécifiez le chemin d'accès vers votre fichier de liste.

    gcloud compute project-info add-metadata --metadata-from-file ssh-keys=[LIST_PATH]
    

    [LIST_PATH] est le chemin d'accès vers votre liste de clés SSH publiques.

API

Ajoutez ou supprimez des clés publiques à l'échelle du projet à l'aide de la méthode instances.setMetadata.

  1. Utilisez la méthode projects.get pour obtenir la valeur de métadonnées fingerprint. Si vous souhaitez conserver vos clés existantes à l'échelle du projet, obtenez les valeurs de ssh-keys existantes.

    GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]
    
    ...
    "fingerprint": "[FINGERPRINT]",
    "items": [
     {
      "key": "ssh-keys",
      "value": "[USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
     }
    ]
    ...

    où :

    • [PROJECT_ID] est votre ID de projet unique ;
    • [FINGERPRINT] est l'ID unique pour cette configuration de métadonnées spécifique, qui vous évite d'écraser accidentellement des modifications simultanées ;
    • [USERNAME_1] et [USERNAME_2] sont les noms d'utilisateur de vos clés existantes ;
    • [EXISTING_KEY_VALUE_1] et [EXISTING_KEY_VALUE_2] sont des valeurs de clés publiques déjà appliquées à votre projet.
  2. Créez une liste de toutes les clés SSH publiques que vous souhaitez ajouter ou conserver dans les métadonnées à l'échelle du projet. Si vous disposez actuellement de clés SSH publiques dans les métadonnées à l'échelle du projet, les clés que vous n'incluez pas dans votre liste seront supprimées.

    Pour cet exemple, le fichier contient une nouvelle valeur de clé ([KEY_VALUE]), suivie de l'une des valeurs de clé existantes obtenues lors de l'étape précédente. La valeur [EXISTING_KEY_VALUE_1] est omise et sera donc supprimée de l'instance lors de l'étape suivante. Utilisez les caractères \n pour séparer chaque valeur de clé.

    [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
    

    où :

    • [USERNAME_1], [USERNAME_2] et [USERNAME_3] sont les noms d'utilisateur de vos clés ;
    • [EXISTING_KEY_VALUE_1] est une valeur de clé publique pour une clé SSH que vous souhaitez supprimer ;
    • [EXISTING_KEY_VALUE_2] est une valeur de clé publique pour une clé SSH que vous souhaitez conserver ;
    • [NEW_KEY_VALUE] est une valeur de clé publique pour une clé SSH que vous souhaitez ajouter.
  3. Utilisez la méthode projects.setcommoninstancemetadata pour définir la valeur ssh-keys à l'échelle du projet. Incluez la valeur fingerprint. Cela garantit que vous ne remplacez pas les modifications simultanées apportées à cette valeur de métadonnées.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/setCommonInstanceMetadata
    
    {
     "items": [
      {
       "key": "ssh-keys",
       "value": "[USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
      }
     ]
     "fingerprint": "[FINGERPRINT]"
    }
    

    où :

    • [PROJECT_ID] est votre ID de projet unique ;
    • [USERNAME_1], [USERNAME_2] et [USERNAME_3] sont les noms d'utilisateur de vos clés ;
    • [EXISTING_KEY_VALUE_1] est une valeur de clé publique pour une clé SSH que vous souhaitez supprimer ;
    • [EXISTING_KEY_VALUE_2] est une valeur de clé publique pour une clé SSH que vous souhaitez conserver ;
    • [NEW_KEY_VALUE] est une valeur de clé publique pour une clé SSH que vous souhaitez ajouter ;
    • [FINGERPRINT] est l'empreinte numérique obtenue précédemment à l'aide de la méthode projects.get.

Une fois les clés SSH modifiées, testez vos modifications en essayant de vous connecter à votre instance Linux via des outils tiers.

Si vous rencontrez des problèmes, vérifiez les métadonnées de l'instance à laquelle vous essayez de vous connecter. Si les métadonnées au niveau de l'instance sont définies pour bloquer les clés SSH à l'échelle du projet ou possèdent une valeur sshKeys obsolète d'instance uniquement, l'instance ignorera toutes les clés SSH à l'échelle du projet. Pour appliquer des clés à l'échelle du projet à une instance, assurez-vous que l'instance autorise les clés SSH publiques à l'échelle du projet et, le cas échéant, supprimez la valeur d'instance sshKeys obsolète des métadonnées de l'instance.

Autoriser ou bloquer les clés SSH publiques à l'échelle du projet à partir d'une instance Linux

Si votre instance doit ignorer les clés SSH publiques à l'échelle du projet et n'utiliser que les clés au niveau de l'instance, vous pouvez bloquer les clés SSH publiques à l'échelle du projet à partir de l'instance. Cette action n'accordera l'accès à l'instance qu'aux utilisateurs dont la clé SSH publique est stockée dans des métadonnées au niveau de l'instance. Si votre instance doit utiliser à la fois des clés SSH publiques à l'échelle du projet et de l'instance, définissez les métadonnées de l'instance afin d'autoriser les clés SSH à l'échelle du projet. Cette action accordera l'accès à l'instance aux utilisateurs dont la clé SSH publique est stockée dans des métadonnées au niveau de l'instance ou du projet.

Console

Pour autoriser ou bloquer des clés SSH publiques à l'échelle du projet depuis la console GCP :

  1. Dans la console Google Cloud Platform, accédez à la page des instances de VM.

    Accéder à la page "Instances"

  2. Cliquez sur le nom de l'instance à modifier.

  3. Dans la barre d'outils, cliquez sur Modifier.

  4. Sous Clés SSH, accédez à la case à cocher Bloquer les clés SSH à l'échelle du projet.

    • Pour empêcher les utilisateurs disposant de clés SSH à l'échelle du projet de se connecter à cette instance, sélectionnez l'option Bloquer les clés SSH à l'échelle du projet.
    • Pour autoriser les utilisateurs disposant de clés SSH à l'échelle du projet à se connecter à cette instance, désactivez l'option Bloquer les clés SSH à l'échelle du projet.
  5. Lorsque vous avez terminé de modifier le paramètre de connexion pour les clés SSH, cliquez sur Enregistrer.

gcloud

Pour autoriser ou bloquer des clés SSH publiques à l'échelle du projet à partir d'une instance Linux, ajoutez la valeur de métadonnées block-project-ssh-keys à votre instance :

  • Pour bloquer les clés SSH publiques à l'échelle du projet, définissez la valeur des métadonnées sur TRUE :

    gcloud compute instances add-metadata [INSTANCE_NAME] --metadata block-project-ssh-keys=TRUE
    

    [INSTANCE_NAME] est le nom de l'instance sur laquelle vous souhaitez bloquer les clés SSH publiques à l'échelle du projet.

  • Pour autoriser les clés SSH publiques à l'échelle du projet, définissez la valeur des métadonnées sur FALSE :

    gcloud compute instances add-metadata [INSTANCE_NAME] --metadata block-project-ssh-keys=FALSE
    

    [INSTANCE_NAME] est le nom de l'instance sur laquelle vous souhaitez autoriser les clés SSH publiques à l'échelle du projet.

API

Pour bloquer ou autoriser des clés SSH publiques à l'échelle du projet à partir d'une instance Linux :

  • Pour bloquer les clés SSH publiques à l'échelle du projet, ajoutez la valeur de métadonnées block-project-ssh-keys à votre instance et définissez-la sur TRUE. Cette valeur de métadonnées empêche toutes les clés à l'échelle du projet de fonctionner sur cette instance, de sorte que seules les clés au niveau de l'instance fonctionnent.

     POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMetadata
    
     {
      "items": [
       {
        "key": "block-project-ssh-keys",
        "value": TRUE
       }
      ]
      "fingerprint": "[FINGERPRINT]"
     }
    

    où :

    • [PROJECT_ID] est votre ID de projet unique ;
    • [ZONE] est la zone où se situe votre instance ;
    • [INSTANCE_NAME] est l'instance sur laquelle vous souhaitez bloquer les clés à l'échelle du projet ;
    • [FINGERPRINT] est l'ID unique pour cette configuration de métadonnées spécifique, qui vous évite d'écraser accidentellement des modifications simultanées.
  • Pour autoriser les clés SSH publiques à l'échelle du projet, ajoutez la valeur de métadonnées block-project-ssh-keys à votre instance et définissez-la sur FALSE. Cette valeur de métadonnées autorise toutes les clés à l'échelle du projet (ainsi que les clés au niveau de l'instance) à fonctionner sur cette instance.

     POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMetadata
    
     {
     "items": [
      {
       "key": "block-project-ssh-keys",
       "value": FALSE
      }
     ]
     "fingerprint": "[FINGERPRINT]"
     }
    

    où :

    • [PROJECT_ID] est votre ID de projet unique ;
    • [ZONE] est la zone où se situe votre instance ;
    • [INSTANCE_NAME] est l'instance sur laquelle vous souhaitez autoriser les clés à l'échelle du projet ;
    • [FINGERPRINT] est l'ID unique pour cette configuration de métadonnées spécifique, qui vous évite d'écraser accidentellement des modifications simultanées.

Lorsque vous avez terminé, testez vos modifications en essayant de vous connecter à votre instance Linux via des outils tiers.

Ajouter ou supprimer des clés SSH publiques au niveau de l'instance

Les clés SSH publiques au niveau de l'instance permettent aux utilisateurs d'accéder à une instance Linux spécifique. Les utilisateurs disposant de clés SSH publiques au niveau de l'instance peuvent accéder à une instance Linux, même si celle-ci bloque les clés SSH publiques à l'échelle du projet.

Console

Pour ajouter ou supprimer des clés SSH publiques au niveau de l'instance depuis la console GCP :

  1. Dans la console Google Cloud Platform, accédez à la page des instances de VM.

    Accéder à la page "Instances"

  2. Cliquez sur le nom de l'instance à modifier.

  3. Dans la barre d'outils, cliquez sur Modifier.

  4. Sous Clés SSH, cliquez sur Afficher et modifier. La section s'étend pour afficher toutes les clés SSH publiques au niveau de l'instance.

  5. Modifiez les clés SSH publiques au niveau de l'instance :

    • Pour ajouter une clé SSH publique, cliquez sur Ajouter un élément. Une zone de texte s'ouvre.
    • Copiez et collez le contenu de votre fichier de clé SSH publique dans la zone de texte.

      Répétez cette procédure pour chaque clé SSH publique à ajouter.

    • Pour supprimer une clé SSH publique, cliquez sur le bouton de suppression situé juste à côté :

      Capture d'écran de la clé publique PuTTYgen

      Répétez cette procédure pour chaque clé SSH publique à supprimer.

  6. Lorsque vous avez terminé de modifier les clés SSH, cliquez sur Enregistrer.

gcloud

Pour ajouter ou supprimer des clés SSH publiques au niveau de l'instance avec l'outil gcloud, procédez comme suit :

  1. Si votre instance possède déjà des clés SSH publiques au niveau de l'instance, procurez-vous ces clés SSH publiques à partir des métadonnées :

    1. Procurez-vous les métadonnées existantes pour l'instance :

       gcloud compute instances describe [INSTANCE_NAME]
       

      [INSTANCE_NAME] est le nom de l'instance sur laquelle vous devez ajouter ou supprimer des clés SSH publiques.

    2. À partir du résultat, trouvez la valeur de métadonnées ssh-keys :

       ...
       metadata:
         fingerprint: QCofVTHlggs=
         items:
         ...
         - key: ssh-keys
           value: |-
             [USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]
             [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
       ...
      

      où :

      • [USERNAME_1] et [USERNAME_2] sont les noms d'utilisateur de vos clés existantes ;
      • [EXISTING_KEY_VALUE_1] et [EXISTING_KEY_VALUE_2] sont des valeurs de clés publiques déjà appliquées à votre instance.

    3. Copiez les clés SSH publiques sous la valeur de métadonnées ssh-keys.

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

  3. Dans le fichier, créez une liste de toutes les clés SSH publiques que vous souhaitez ajouter ou conserver dans les métadonnées au niveau de l'instance. Si vous disposez actuellement de clés SSH publiques dans les métadonnées au niveau de l'instance, toutes les clés que vous n'incluez pas dans votre liste seront supprimées.

    Dans cet exemple, la liste ci-dessous va supprimer la clé pour [USERNAME_1], car sa clé SSH a été omise. Elle conservera également la clé SSH pour [USERNAME_2] et ajoutera la clé SSH pour [USERNAME_3], car leurs clés SSH sont incluses dans la liste.

    [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
    [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]
    

    où :

    • [USERNAME_1], [USERNAME_2] et [USERNAME_3] sont les noms d'utilisateur des clés SSH publiques ;
    • [EXISTING_KEY_VALUE_1] est une valeur de clé publique pour une clé SSH que vous souhaitez supprimer ;
    • [EXISTING_KEY_VALUE_2] est une valeur de clé publique pour une clé SSH que vous souhaitez conserver ;
    • [NEW_KEY_VALUE] est une valeur de clé publique pour une clé SSH que vous souhaitez ajouter.
  4. Enregistrez et fermez le fichier.

  5. Dans l'invite de commande, saisissez la commande compute instances add-metadata pour définir la valeur ssh-key au niveau de l'instance uniquement. Incluez l'indicateur --metadata-from-file et spécifiez le chemin d'accès vers la liste de fichiers de clés publiques que vous venez de créer.

    gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=[LIST_PATH]
    

    où :

    • [INSTANCE_NAME] est le nom de l'instance sur laquelle vous souhaitez appliquer le fichier de clé SSH publique ;
    • [LIST_PATH] est le chemin d'accès vers votre liste de clés SSH publiques.

API

Ajoutez une valeur exclusive d'instance ssh-keys dans les métadonnées à l'aide de la méthode instances.setMetadata.

  1. Utilisez la méthode instances.get pour obtenir la valeur de métadonnées fingerprint à utiliser pour la requête. Si vous souhaitez conserver vos clés de niveau instance existantes, obtenez les valeurs ssh-keys existantes.

    GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]
    

    Le serveur affiche une réponse semblable à ce qui suit :

    ...
    "fingerprint": "[FINGERPRINT]",
    "items": [
     {
      "key": "ssh-keys",
      "value": "[USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
     }
    ]
    ...
    

    où :

    • [PROJECT_ID] est votre ID de projet unique ;
    • [ZONE] est la zone où se situe votre instance ;
    • [INSTANCE_NAME] est l'instance sur laquelle vous souhaitez modifier les clés SSH publiques au niveau de l'instance ;
    • [FINGERPRINT] est l'ID unique pour cette configuration de métadonnées spécifique, qui vous évite d'écraser accidentellement des modifications simultanées ;
    • [USERNAME_1] et [USERNAME_2] sont les noms d'utilisateur de vos clés existantes ;
    • [EXISTING_KEY_VALUE_1] et [EXISTING_KEY_VALUE_2] sont des valeurs de clés publiques déjà appliquées à votre instance.
  2. Créez une liste de toutes les clés SSH publiques que vous souhaitez ajouter ou conserver dans les métadonnées au niveau de l'instance. Si vous disposez actuellement de clés SSH publiques dans les métadonnées au niveau de l'instance, toutes les clés que vous n'incluez pas dans votre liste seront supprimées.

    Pour cet exemple, le fichier contient une nouvelle valeur de clé ([KEY_VALUE]), suivie de l'une des valeurs de clé existantes obtenues lors de l'étape précédente. La valeur [EXISTING_KEY_VALUE_1] est omise et sera donc supprimée de l'instance lors de l'étape suivante. Utilisez les caractères \n pour séparer chaque valeur de clé.

    [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
    

    où :

    • [USERNAME_1], [USERNAME_2] et [USERNAME_3] sont les noms d'utilisateur de vos clés ;
    • [EXISTING_KEY_VALUE_1] est une valeur de clé publique pour une clé SSH que vous souhaitez supprimer ;
    • [EXISTING_KEY_VALUE_2] est une valeur de clé publique pour une clé SSH que vous souhaitez conserver ;
    • [NEW_KEY_VALUE] est une valeur de clé publique pour une clé SSH que vous souhaitez ajouter.
  3. Utilisez la méthode instances.setMetadata pour définir la valeur exclusive d'instance ssh-keys. Incluez la valeur fingerprint. Cela garantit que vous ne remplacez pas les modifications simultanées de cette valeur de métadonnées.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMetadata
    
    {
     "items": [
      {
       "key": "ssh-keys",
       "value": "[USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
      }
     ]
     "fingerprint": "[FINGERPRINT]"
    }
    

    où :

    • [PROJECT_ID] est votre ID de projet unique ;
    • [ZONE] est la zone où se situe votre instance ;
    • [INSTANCE_NAME] est l'instance sur laquelle vous souhaitez modifier les clés SSH publiques au niveau de l'instance ;
    • [USERNAME_1], [USERNAME_2] et [USERNAME_3] sont les noms d'utilisateur de vos clés ;
    • [EXISTING_KEY_VALUE_1] est une valeur de clé publique pour une clé SSH que vous souhaitez supprimer ;
    • [EXISTING_KEY_VALUE_2] est une valeur de clé publique pour une clé SSH que vous souhaitez conserver ;
    • [NEW_KEY_VALUE] est une valeur de clé publique pour une clé SSH que vous souhaitez ajouter ;
    • [FINGERPRINT] est l'ID unique pour cette configuration de métadonnées spécifique, qui vous évite d'écraser accidentellement des modifications simultanées.v

Une fois les clés SSH modifiées, testez vos modifications en essayant de vous connecter à votre instance Linux via des outils tiers.

Étape suivante

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine