Ce document explique comment configurer des applications pour connecter de manière automatisée deux instances de machine virtuelle (VM) à l'aide de SSH et d'OS Login. Le fait d'autoriser les applications à utiliser SSH peut être utile pour automatiser les processus de gestion du système.
Tous les exemples de code utilisés dans ce guide sont hébergés sur la page GitHub GoogleCloudPlatform/python-docs-samples.
Avant de commencer
- Configurez SSH pour un compte de service.
- Configurez OS Login sur votre projet ou sur une VM qui s'exécute en tant que compte de service.
-
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 comme suit :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Définissez une région et une zone par défaut.
-
Configurer une application SSH
Configurez votre application pour gérer les clés SSH et initier des connexions SSH aux VM Compute Engine. En règle générale, votre application doit effectuer les opérations suivantes :
- Importez la bibliothèque Google OS Login pour créer des bibliothèques clientes, ce qui vous permet de vous authentifier avec l'API OS Login.
- Initialisez l'objet Client OS Login pour permettre à votre application d'utiliser OS Login.
- Mettez en œuvre une méthode
create_ssh_key()
qui génère une clé SSH pour le compte de service de la VM et ajoute la clé publique au compte de service. - Appelez la méthode
get_login_profile()
à partir de la bibliothèque OS Login pour obtenir le nom d'utilisateur POSIX utilisé par le compte de service. - Mettez en œuvre une méthode
run_ssh()
pour exécuter une commande SSH distante. - Supprimez les fichiers de clé SSH temporaires.
Exemple d'application SSH
L'exemple d'application oslogin_service_account_ssh.py
illustre une mise en œuvre possible d'une application SSH. Dans cet exemple, l'application utilise la méthode run_ssh()
pour exécuter une commande sur une instance distante et renvoyer le résultat de la commande.
Exécuter l'application SSH
Après avoir créé une application qui utilise SSH, vous pouvez l'exécuter en suivant un processus semblable à l'exemple suivant, qui installe et exécute l'exemple d'application oslogin_service_account_ssh.py
. Les bibliothèques que vous installez peuvent varier en fonction du langage de programmation utilisé par l'application.
Vous pouvez également créer une application qui importe oslogin_service_account_ssh.py
et l'exécute directement.
Connectez-vous à la VM qui héberge l'application SSH.
Sur la VM, installez
pip
et la bibliothèque cliente Python 3 :sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
Facultatif : Si vous utilisez l'exemple d'application
oslogin_service_account_ssh.py
, téléchargez-le à partir de GoogleCloudPlatform/python-docs-samples :curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
Exécutez l'application SSH. L'exemple d'application utilise
argparse
pour accepter les variables depuis la ligne de commande. Dans cet exemple, indiquez à l'application d'installer et d'exécutercowsay
sur une autre VM de votre projet.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=PROJECT_ID --instance=VM_NAME --zone=ZONE
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de la VM à laquelle l'application se connecte.VM_NAME
: nom de la VM à laquelle l'application se connecte.ZONE
: zone de la VM à laquelle l'application se connecte.
Le résultat ressemble à ce qui suit :
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Étapes suivantes
- Téléchargez et consultez l'exemple de code complet. Il comprend une courte illustration de l'utilisation conjointe de toutes ces méthodes. N'hésitez pas à le télécharger, à le modifier et à l'exécuter selon vos besoins.
- Obtenez plus d'informations sur le fonctionnement des connexions SSH dans Compute Engine, y compris la configuration et le stockage de clés SSH.