Se connecter à des instances à l'aide de méthodes avancées

En général, les meilleures méthodes de connexion SSH sont décrites sur la page Se connecter à des instances. Toutefois, si vous devez gérer vos propres identifiants, utiliser des outils tiers ou vous connecter en utilisant d'autres chemins de connexion, il est possible que les méthodes avancées présentées ci-dessous correspondent davantage à vos besoins que les méthodes standards.

Il existe plusieurs méthodes avancées pour se connecter aux instances Linux et Windows Server :

Avant de commencer

Fournir des clés SSH publiques aux instances

Normalement, Compute Engine crée et gère les clés SSH chaque fois que vous vous connectez à l'aide des méthodes décrites dans la section Se connecter à des instances.

Toutefois, si vous devez utiliser vos propres clés SSH (par exemple, si vous utilisez un outil tiers), vous devez générer votre propre paire de clés SSH et fournir votre clé SSH publique à l'instance avant de pouvoir vous connecter.

Si vous ne savez pas comment générer votre propre clé SSH ni où trouver votre fichier de clé SSH publique, consultez les sections Créer une clé SSH et Trouver une clé SSH.

Pour fournir votre clé SSH à l'instance, appliquez l'une des méthodes suivantes :

  • (Recommandé) Activez OS Login et utilisez les rôles IAM pour fournir votre clé SSH publique à l'instance via votre compte Google ou un compte utilisateur géré. Pour ce faire, procédez comme indiqué dans la page Configurer OS Login pour activer OS Login et créer les rôles. Consultez ensuite la section Ajouter des clés SSH à un compte utilisateur pour ajouter votre clé publique au rôle que vous souhaitez utiliser pour vous connecter à l'instance.

  • (Déconseillé) Ajoutez et supprimez manuellement les clés SSH en modifiant les métadonnées du projet ou de l'instance. Consultez la section Gérer des clés SSH dans les métadonnées. Cette méthode ajoute des risques et une complexité inutiles et n'est pas recommandée, à moins que la méthode OS Login présentée ci-dessus ne fonctionne pas dans votre cas. Consultez la section Risques liés à la gestion manuelle des clés.

  • Si votre instance est gérée par une autre personne qui a déjà des accès, comme par exemple un administrateur système, vous pouvez lui fournir votre clé SSH publique et lui demander de la configurer manuellement. Cela implique généralement que cette personne se connecte à votre instance, copie le fichier de votre clé publique dans le répertoire de base de l'instance et modifie les autorisations sur le fichier. Toutefois, cela dépend de la façon dont votre entreprise gère les instances.

Se connecter à l'aide d'outils tiers

Après avoir fourni la clé SSH publique à l'instance, vous pouvez utiliser des outils SSH tiers avec votre clé SSH privée correspondante pour vous connecter.

En fonction du système d'exploitation sur votre poste de travail local, suivez les instructions suivantes :

Linux et macOS

Pour vous connecter en SSH à partir d'une machine Linux ou macOS, exécutez la commande ssh intégrée dans un terminal local :

  1. Si vous ne l'avez pas déjà fait, fournissez votre clé SSH publique à une instance en utilisant l'une des options disponibles. Vous ne pouvez pas continuer sans cela.

  2. Dans Google Cloud Console, accédez à la page Instances de VM et recherchez l'adresse IP externe de l'instance à laquelle vous souhaitez vous connecter.

    Accéder à la page Instances

  3. À partir de votre terminal local, exécutez la commande ssh avec votre fichier de clé SSH privée, le nom d'utilisateur et l'adresse IP externe de l'instance à connecter. Exemple :

    ssh -i path-to-private-key username@external-ip

    Remplacez l'élément suivant :

    • path-to-private-key : chemin d'accès au fichier de clé SSH privée.
    • username : nom de l'utilisateur qui se connecte à l'instance. Pour les comptes OS Login, le nom d'utilisateur est défini dans votre profil utilisateur. Si vous gérez vos clés SSH dans les métadonnées, le nom d'utilisateur est celui que vous avez spécifié lorsque vous avez créé la clé SSH.
    • external-ip : adresse IP externe de votre instance.

    Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Windows (PuTTY)

Windows n'inclut pas de client SSH intégré, ce qui signifie que vous devez télécharger et installer un client tiers. Les instructions suivantes montrent comment se connecter avec PuTTY.

Pour vous connecter à une instance depuis Windows à l'aide de PuTTY, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, fournissez votre clé SSH publique à une instance en utilisant l'une des options disponibles. Vous ne pouvez pas continuer sans cela.

  2. Dans Google Cloud Console, accédez à la page Instances de VM et recherchez l'adresse IP externe de l'instance à laquelle vous souhaitez vous connecter. Laissez l'adresse IP externe disponible pour les étapes ultérieures.

    Accéder à la page Instances

  3. Si vous ne l'avez pas déjà fait, téléchargez putty.exe.

  4. Ouvrez PuTTY en lançant putty.exe. Une fenêtre de configuration de la connexion s'ouvre.

  5. Dans le champ Host Name (Nom d'hôte) de la page de configuration de la connexion, entrez le nom d'utilisateur associé à la clé SSH et l'adresse IP externe de l'instance à laquelle vous souhaitez vous connecter en respectant le format suivant :

    username@external-ip

    Remplacez l'élément suivant :

    • username : nom de l'utilisateur qui se connecte à l'instance. Il doit s'agir du nom d'utilisateur que vous avez spécifié lors de la création de la clé SSH.
    • external-ip : adresse IP externe de l'instance à laquelle vous souhaitez vous connecter.

      Par exemple :

      Définir le champ

  6. Dans le menu Catégorie de gauche, accédez à Connexion > SSH > Auth.

  7. Dans le champ Fichier de clé privée pour l'authentification, accédez à l'emplacement de votre fichier de clé privée.

    Par exemple :

    Définir le chemin d'accès au fichier my-ssh-key.ppk dans le champ du fichier de clé privée.

  8. Cliquez sur Ouvrir pour ouvrir un terminal avec une connexion à votre instance.

    Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Chrome OS (application SSH)

Les Chromebooks ou les systèmes d'exploitation sur lesquels Chrome est installé utilisent Secure Shell en tant que client SSH. Pour vous connecter à des instances depuis l'application Secure Shell, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, fournissez votre clé SSH publique à une instance en utilisant l'une des options disponibles. Vous ne pouvez pas continuer sans cela.

  2. Si vous ne l'avez pas déjà fait, installez Secure Shell sur votre Chromebook ou dans le navigateur Chrome.

  3. Dans Google Cloud Console, accédez à la page Instances de VM et recherchez l'adresse IP externe de l'instance à laquelle vous souhaitez vous connecter. Laissez l'adresse IP externe disponible pour les étapes ultérieures.

    Accéder à la page Instances

  4. Ouvrez l'application Secure Shell dans un onglet du navigateur Chrome.

  5. Entrez le nom d'utilisateur associé à la paire de clés SSH et l'adresse IP externe de l'instance à laquelle vous souhaitez vous connecter en respectant le format suivant :

    username@external-ip

    Remplacez l'élément suivant :

    • username : nom de l'utilisateur qui se connecte à l'instance. Il doit s'agir du nom d'utilisateur que vous avez spécifié lors de la création de la clé SSH.
    • external-ip : adresse IP externe de l'instance à laquelle vous souhaitez vous connecter.
  6. Dans le champ Identité, sélectionnez le fichier de clé SSH privée que vous souhaitez utiliser pour vous connecter à l'instance. Si nécessaire, cliquez sur Importer pour sélectionner un fichier de clé privée sur votre poste de travail local.

  7. Cliquez sur Se connecter pour vous connecter à l'instance.

    Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Autres options SSH

Outre les options détaillées ci-dessus, les options de connexion à une instance via SSH listées ci-après sont également disponibles :

Se connecter à des instances sans adresse IP externe

Si vos instances ne disposent pas d'adresse IP externe, vous pouvez toujours vous connecter à ces instances en utilisant leur adresse IP interne depuis le réseau VPC (cloud privé virtuel) de Google Cloud. Par exemple, vous pouvez toujours vous connecter aux instances de VM que vous isolez intentionnellement depuis des réseaux externes à l'aide des méthodes suivantes :

Se connecter via une connexion VPN

Pour vous connecter à une instance sans adresse IP externe à l'aide d'un réseau privé virtuel (VPN), procédez comme suit :

  • Vous devez utiliser un ordinateur pouvant accéder à l'instance de VM via un tunnel Cloud VPN.

    Par exemple, vous pouvez avoir un VPN que votre réseau local sur site partage avec votre réseau VPC Google Cloud. Si tel est le cas, connectez-vous à l'instance à l'aide de l'outil de ligne de commande gcloud, de SSH sous Linux et macOS, ou de clients SSH tiers tels que PuTTY sous Windows.

Pour en savoir plus, consultez les pages suivantes :

gcloud

Connectez-vous à une instance sans adresse IP externe en exécutant la commande gcloud compute ssh avec l'option --internal-ip. Remplacez internal-instance-name par le nom de l'instance à laquelle vous souhaitez vous connecter.

gcloud compute ssh internal-instance-name --internal-ip

Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Linux et macOS

Pour vous connecter à une instance sans adresse IP externe à partir de postes de travail Linux ou macOS, procédez comme suit :

  1. Fournissez votre clé SSH publique à une instance en utilisant l'une des options disponibles. Vous ne pouvez pas continuer sans cela.

  2. Sur votre machine locale, démarrez ssh-agent pour qu'il gère vos clés SSH à votre place :

    $ eval ssh-agent $SHELL
    
  3. Exécutez la commande ssh-add pour charger votre clé SSH privée dans l'agent à partir de votre ordinateur local et l'utiliser pour l'authentification de toutes les commandes SSH. Remplacez private-key par le nom de votre fichier de clé privée.

    $ ssh-add ~/.ssh/private-key
    
  4. Dans Google Cloud Console, accédez à la page Instances de VM et recherchez l'adresse IP interne de l'instance à laquelle vous souhaitez vous connecter.

    Accéder à la page Instances de VM

  5. À partir de votre terminal local, exécutez la commande ssh avec le nom d'utilisateur associé à la clé SSH privée et l'adresse IP interne de l'instance à connecter. Exemple :

    $ ssh username@internal-instance-ip-address

    Remplacez l'élément suivant :

    • username : nom de l'utilisateur qui se connecte à l'instance. Il doit s'agir du nom d'utilisateur que vous avez spécifié lors de la création de la clé SSH.
    • internal-instance-ip-address : adresse IP interne de l'instance à laquelle vous souhaitez vous connecter.

Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Windows (PuTTY)

Pour vous connecter à une instance sans adresse IP externe à partir de postes de travail Windows, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, fournissez votre clé SSH publique à une instance en utilisant l'une des options disponibles. Vous ne pouvez pas continuer sans cela.

  2. Dans Google Cloud Console, accédez à la page Instances de VM et recherchez l'adresse IP interne de l'instance à laquelle vous souhaitez vous connecter.

    Accéder à la page Instances

  3. Suivez les étapes ci-dessus pour vous connecter à une instance à l'aide de PuTTY à partir de Windows, mais effectuez la modification suivante :

    • Lorsque les étapes vous indiquent de spécifier une adresse IP externe, spécifiez plutôt l'adresse interne de l'instance à laquelle vous souhaitez vous connecter.

Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Se connecter via un hôte bastion

Une autre méthode de connexion à une instance qui ne possède pas d'adresse IP externe consiste à se connecter via un hôte bastion. L'utilisation d'un hôte bastion vous permet également de vous connecter à des instances sur d'autres réseaux VPC appairés.

Pour vous connecter à une instance via un hôte bastion sous Linux et macOS, utilisez l'outil de ligne de commande gcloud ou SSH. Pour vous connecter à partir de Windows, utilisez un client SSH tiers tel que PuTTY.

La connexion à d'autres instances à partir d'un hôte bastion requiert une clé SSH privée. Il existe plusieurs manière de gérer ces clés :

  • Installez l'outil de ligne de commande gcloud et configurez-le pour gérer vos clés privées à votre place.
  • Transférez votre clé privée à l'instance de l'hôte bastion en activant le transfert d'agent dans votre client SSH.

Pour connaître la procédure détaillée, consultez les exemples ci-dessous :

gcloud

L'outil de ligne de commande gcloud vous permet de vous connecter à des instances qui n'ont pas d'adresse IP externe sans avoir à transférer vos clés SSH privées vers l'hôte bastion. Pour ce faire, installez gcloud sur votre poste de travail local et sur l'instance de l'hôte bastion, si vous ne l'avez pas déjà fait.

Pour utiliser l'outil de ligne de commande gcloud afin de vous connecter à une instance qui ne possède pas d'adresse IP externe, procédez comme suit :

  1. Définissez un niveau d'accès en lecture/écriture à l'API Compute Engine pour le compte de service sur l'instance de votre hôte bastion en incluant --scopes compute-rw dans votre commande. Pour en savoir plus, consultez la section Modifier le compte de service et les niveaux d'accès d'une instance.

  2. Accordez les autorisations IAM nécessaires pour permettre à votre hôte bastion d'accéder à votre clé publique SSH, à l'aide d'OS Login (recommandé) ou des métadonnées du projet. Suivez l'une des procédures suivantes :

    Le compte de service de l'hôte bastion peut désormais appliquer votre clé SSH publique.

  3. Connectez-vous à l'instance Linux de l'hôte bastion. Remplacez external-instance-name par le nom de l'instance de l'hôte bastion que vous utilisez pour accéder au réseau interne.

    gcloud compute ssh external-instance-name
    
  4. Depuis l'instance Linux de l'hôte bastion, exécutez la commande gcloud compute ssh avec l'option --internal-ip pour vous connecter aux instances à l'aide de leurs adresses IP internes : Remplacez internal-instance-name par le nom de l'instance à laquelle vous souhaitez vous connecter.

    gcloud compute ssh internal-instance-name --internal-ip
    

Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Linux et macOS

Si vous devez transférer des clés privées vers l'instance de l'hôte bastion, vous devez ajouter vos clés à ssh-agent. Exécutez ensuite la commande gcloud compute ssh ou ssh pour établir la connexion initiale à l'hôte bastion et transférer les clés vers l'agent SSH. Ce processus ne fonctionne que sur les postes de travail Linux et macOS. Si vous devez transférer des clés privées vers un hôte bastion à partir d'un poste de travail Windows, suivez plutôt les instructions PuTTY.

Pour vous connecter à une instance sans adresse IP externe à partir de postes de travail Linux ou macOS, procédez comme suit :

  1. Fournissez votre clé SSH publique en utilisant l'une des options disponibles. Veillez à fournir cette clé SSH publique à la fois à l'instance Linux de l'hôte bastion et à l'instance sans adresse IP externe.

  2. Sur votre machine locale, démarrez ssh-agent pour qu'il gère vos clés SSH à votre place :

    $ eval ssh-agent $SHELL
    
  3. Utilisez la commande ssh-add pour charger votre clé SSH privée dans l'agent à partir de votre ordinateur local et l'utiliser pour l'authentification de toutes les commandes SSH. Remplacez private-key par le nom de votre fichier de clé privée.

    $ ssh-add ~/.ssh/private-key
    
  4. Recherchez l'adresse IP externe de l'instance Linux de l'hôte bastion ainsi que l'adresse IP interne de l'instance interne à laquelle vous souhaitez vous connecter. Vous pouvez trouver ces adresses dans les colonnes Adresse IP externe et Adresse IP interne de vos instances de VM.

    Accéder à la page "Instances"

  5. Connectez-vous à l'instance Linux de l'hôte bastion en exécutant ssh ou gcloud compute ssh. Quelle que soit l'option choisie, ajoutez l'argument -A pour activer le transfert d'agent pour l'authentification.

    Connectez-vous à l'instance Linux de l'hôte bastion et transférez vos clés privées avec ssh.

    $ ssh -A username@bastion-host-external-ip

    Remplacez l'élément suivant :

    • username : nom associé à votre clé SSH.
    • bastion-host-external-ip : adresse IP externe de l'instance de l'hôte bastion que vous utilisez pour accéder au réseau interne

    Vous pouvez également vous connecter à l'instance de l'hôte bastion et transférer vos clés privées à l'aide de la commande gcloud compute ssh. Cette option vous permet de vous connecter à l'instance de l'hôte bastion à l'aide de l'outil de ligne de commande gcloud, puis d'exécuter la commande ssh standard avec les identifiants transférés lorsque vous vous connectez à des adresses IP internes. Remplacez bastion-host-instance-name par le nom de l'instance de l'hôte bastion que vous utilisez pour accéder à votre réseau interne.

    gcloud compute ssh --ssh-flag="-A" bastion-host-instance-name
    
  6. À partir de l'instance Linux de l'hôte bastion, connectez-vous à l'instance qui ne possède pas d'adresse IP externe à l'aide de SSH.

    $ ssh username@internal-instance-ip-address

    Remplacez l'élément suivant :

    • username : nom associé à votre clé SSH.
    • internal-instance-ip-address : adresse IP interne de l'instance à laquelle vous souhaitez vous connecter.

Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Windows

Pour vous connecter à une instance sans adresse IP externe à partir de postes de travail Windows, procédez comme suit :

  1. Fournissez votre clé SSH publique en utilisant l'une des options disponibles. Veillez à fournir cette clé SSH publique à la fois à l'instance Linux de l'hôte bastion et à l'instance sans adresse IP externe.

  2. Recherchez l'adresse IP externe de l'instance Linux de l'hôte bastion ainsi que l'adresse IP interne de l'instance interne à laquelle vous souhaitez vous connecter. Vous pouvez trouver ces adresses dans les colonnes Adresse IP externe et Adresse IP interne de vos instances de VM.

    Accéder à la page Instances

  3. Connectez-vous à l'instance Linux de l'hôte bastion à l'aide de PuTTY. Pour transmettre votre clé SSH privée à l'hôte bastion, activez le paramètre Allow agent forwarding (Autoriser le transfert d'agent) comme indiqué dans la capture d'écran suivante :

    Autoriser le transfert d'agent pour l'instance à laquelle vous vous connectez.

  4. À partir de l'instance Linux de l'hôte bastion, connectez-vous à l'instance qui ne possède pas d'adresse IP externe à l'aide de SSH :

    $ ssh username@internal-ip-address
    

    Remplacez l'élément suivant :

    • username : nom de l'utilisateur qui se connecte à l'instance. Il doit s'agir du nom d'utilisateur que vous avez spécifié lors de la création de la clé SSH.
    • internal-ip-address : adresse IP interne de l'instance à laquelle vous souhaitez vous connecter.

    Une fois connecté, exécutez les commandes sur votre instance à l'aide de ce terminal. Lorsque vous avez terminé, déconnectez-vous de l'instance en exécutant la commande exit.

Se connecter via IAP

L'utilisation de SSH avec la fonctionnalité de transfert TCP d'IAP encapsule une connexion SSH en HTTPS. La fonctionnalité de transfert TCP d'IAP l'envoie ensuite à l'instance distante.

Les utilisateurs disposant de l'autorisation iap.tunnelResourceAccessor peuvent se connecter en SSH en exécutant la commande suivante :

gcloud compute ssh [INSTANCE-NAME]

Pour en savoir plus, y compris sur la configuration des règles d'accès contextuel et l'accès à d'autres ports TCP de la VM, consultez la page Utiliser IAP pour le transfert TCP.

Se connecter aux instances en tant qu'utilisateur racine

Par défaut, les images publiques et les systèmes d'exploitation les plus courants n'autorisent pas la connexion en tant qu'utilisateur racine via SSH. Vous pouvez vous connecter aux instances en tant qu'utilisateur racine via SSH uniquement si vous les configurez pour fonctionner de cette manière.

Nous vous recommandons de définir le paramètre PermitRootLogin sur no dans le fichier de configuration SSH /etc/ssh/sshd_config. Avec ce paramètre, vous ne pouvez pas vous connecter à une instance en tant qu'utilisateur racine, même si vous spécifiez une clé SSH pour root dans les métadonnées de projet ou d'instance. Si un utilisateur a besoin des autorisations racine, il peut les obtenir en exécutant les commandes avec sudo.

Si vous avez configuré une instance pour autoriser SSH en tant qu'utilisateur racine et que vous avez configuré une clé SSH pour l'utilisateur racine sur cette instance, vous pouvez vous connecter en tant qu'utilisateur racine à l'aide de la commande gcloud compute ssh, en spécifiant root@ avant le nom de l'instance :

gcloud compute ssh --project project-id
    --zone zone root@instance-name

Remplacez l'élément suivant :

  • project-id : identifiant du projet contenant l'instance
  • zone : nom de la zone dans laquelle se trouve l'instance
  • instance-name : nom de l'instance

Se connecter aux instances Windows à l'aide du terminal PowerShell

Si vous disposez d'un poste de travail Windows avec PowerShell, vous pouvez vous connecter à vos instances Windows Server via une session PowerShell distante. Ce processus est semblable à celui permettant de se connecter à une instance Linux avec SSH.

  1. Si vous n'avez pas encore créé de nom d'utilisateur et de mot de passe sur l'instance Windows distante, créez ou réinitialisez votre mot de passe Windows.

  2. Ajoutez une règle de pare-feu qui ouvre le port 5986 sur le réseau VPC Google Cloud où se trouve l'instance Windows Server.

  3. Sur votre poste de travail local, ouvrez le terminal PowerShell.

  4. Si vous le souhaitez, vous pouvez initialiser une variable qui conservera vos identifiants et vous évitera de les saisir chaque fois que vous vous connectez à l'instance. Si vous ignorez cette étape, vous serez invité à saisir votre nom d'utilisateur et votre mot de passe ultérieurement.

    PS C:\> $credentials = Get-Credential
    
  5. Exécutez la commande Enter-PSSession pour démarrer une session PowerShell à distance, en incluant les options pour utiliser SSL et ignorer les vérifications d'identification. Remplacez ip-address par l'adresse IP externe, le nom DNS ou le nom de l'ordinateur Windows pour l'instance à laquelle vous souhaitez vous connecter.

    PS C:\> Enter-PSSession -ComputerName ip-address -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials
    

Une fois la connexion établie, l'invite de commande change pour inclure l'adresse IP de l'instance Windows distante. Vous pouvez maintenant vous servir du terminal pour exécuter des commandes PowerShell sur l'instance Windows Server à distance.

Au lieu de la commande Enter-PSSession, vous pouvez exécuter Invoke-Command avec l'option -ScriptBlock pour exécuter des commandes PowerShell sur l'instance à distance sans établir de session interactive.

PS C:\> Invoke-Command -ComputerName ip-address -ScriptBlock { script } -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials

Remplacez l'élément suivant :

  • ip-address : adresse IP, nom du système DNS ou nom de l'ordinateur Windows pour l'instance à laquelle vous souhaitez vous connecter.
  • script : une ou plusieurs commandes à exécuter sur l'instance distante. Par exemple, spécifiez Get-EventLog -log "Windows PowerShell" pour obtenir la liste des événements du journal.

Connexion manuelle entre des instances en tant que compte de service

Dans certaines situations, vous souhaitez peut-être vous connecter à des instances et exécuter des commandes comme si vous étiez le compte de service associé à ces instances. La commande gcloud compute ssh vous permet d'utiliser les identifiants SSH d'un compte de service pour vous connecter d'une instance à une autre, vous permettant ainsi d'exécuter des commandes sur la seconde instance en tant que compte de service.

L'outil de ligne de commande gcloud génère automatiquement une paire de clés SSH et l'associe au compte de service de votre instance. Une fois que vous êtes connecté à une autre instance en tant que compte de service, vous pouvez exécuter d'autres commandes gcloud à l'aide des autorisations IAM du compte de service.

Pour cet exemple, supposons que vous disposiez de l'environnement suivant :

  • Instance A :
    • L'instance A est associée à un compte de service.
    • Le compte de service associé à l'instance A possède les rôles OS Login nécessaires, configurés au niveau du projet ou spécifiquement pour la ressource de l'instance B.
    • Le compte de service dispose du champ d'application https://www.googleapis.com/auth/cloud-platform au niveau de la plate-forme sur l'instance A.
  • Instance B :
    • L'instance B s'exécute sur le même réseau interne que l'instance A ou sur un réseau dont les règles de pare-feu autorisent les connexions SSH à partir de l'instance A.
    • La fonctionnalité OS Login est activée sur votre projet ou spécifiquement sur l'instance B.
  • Votre compte utilisateur personnel :
    • Votre compte dispose du rôle roles/iam.serviceAccountUser pour le compte de service associé à l'instance A.
    • Votre compte dispose d'un accès SSH spécifique à l'instance A.
    • Votre compte n'a pas accès à l'instance B. Le compte de service est le seul compte disposant des rôles OS Login nécessaires pour se connecter à l'instance B.

Connectez-vous à l'instance A et exécutez les commandes en tant que compte de service. Cette étape nécessite que vous disposiez du rôle roles/iam.serviceAccountUser pour ce compte de service :

  1. Connectez-vous à l'instance A en tant qu'utilisateur disposant du rôle roles/iam.serviceAccountUser. Par exemple, vous pouvez utiliser l'outil de ligne de commande gcloud pour établir cette première connexion SSH :

    my-username@localworkstation:~$ gcloud compute ssh instance-a --project my-project --zone us-east1-d
    
  2. Après avoir établi une connexion SSH à l'instance A, vous pouvez exécuter des commandes en tant que compte de service, à condition de disposer du rôle roles/iam.serviceAccountUser. Dans cet exemple, exécutez l'outil gcloud sur l'instance A pour créer une connexion chain-SSH avec l'instance B. L'outil gcloud identifie que l'instance B est activée pour utiliser OS Login, et que le compte de service dispose des rôles IAM nécessaires pour établir une connexion SSH avec l'instance B.

    my-username@instance-a:~$ gcloud compute ssh instance-b --project my-project --zone us-east1-d
    
    WARNING: Using OS Login user [sa_113491385848438711199] instead of default user [my-username]
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64
    ⋮
    
  3. Vous êtes maintenant connecté à l'instance B en tant que compte de service et pouvez exécuter des commandes en tant que compte de service.

    sa_113491385848438711199@instance-b:~$ uname -a
    
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 GNU/Linux
    

Étapes suivantes