In diesem Dokument wird beschrieben, wie Sie Anwendungen für die programmatische Verbindung zwischen zwei VM-Instanzen über SSH und OS Login konfigurieren. Wenn Sie Apps die Verwendung von SSH erlauben, können Sie die Systemverwaltungsprozesse automatisieren.
Alle in diesem Handbuch verwendeten Codebeispiele werden auf der GitHub-Seite „GoogleCloudPlatform/python-docs-samples” gehostet.
Hinweise
- Richten Sie SSH für ein Dienstkonto ein.
- Richten Sie OS Login für Ihr Projekt oder auf einer VM ein, die als Dienstkonto ausgeführt wird.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
SSH-App einrichten
Richten Sie Ihre App so ein, dass sie SSH-Schlüssel verwaltet und SSH-Verbindungen zu Compute Engine-VMs initiiert. Auf übergeordneter Ebene sollte Ihre Anwendung Folgendes tun:
- Importieren Sie die Google OS Login-Bibliothek, um Clientbibliotheken zu erstellen. Dadurch können Sie sich bei der OS Login API authentifizieren.
- Initialisieren Sie das OS Login Client-Objekt, damit Ihre Anwendung OS Login verwenden kann.
- Implementieren Sie eine
create_ssh_key()
-Methode, die einen SSH-Schlüssel für das Dienstkonto der VM generiert und den öffentlichen Schlüssel zum Dienstkonto hinzufügt. - Rufen Sie die Methode
get_login_profile()
aus der OS Login-Bibliothek auf, um den POSIX-Nutzernamen abzurufen, den das Dienstkonto verwendet. - Implementieren Sie eine
run_ssh()
-Methode, um einen Remote-SSH-Befehl auszuführen. - Entfernen Sie die temporären SSH-Schlüsseldateien.
Beispiel-SSH-App
Die Beispielanwendung oslogin_service_account_ssh.py
zeigt eine mögliche Implementierung einer SSH-Anwendung. In diesem Beispiel verwendet die Anwendung die Methode run_ssh()
, um einen Befehl auf einer Remoteinstanz auszuführen und die Befehlsausgabe zurückzugeben.
SSH-App ausführen
Nachdem Sie eine App erstellt haben, die SSH verwendet, können Sie sie ausführen. Gehen Sie dazu ähnlich wie im folgenden Beispiel vor, in dem die Beispiel-App oslogin_service_account_ssh.py
installiert und ausgeführt wird. Die von Ihnen installierten Bibliotheken können je nach verwendeter Programmiersprache variieren.
Alternativ können Sie eine App schreiben, die oslogin_service_account_ssh.py
importiert und direkt ausführt.
Stellen Sie eine Verbindung zur VM her, auf der die SSH-Anwendung gehostet wird.
Installieren Sie auf der VM
pip
und die Python 3-Clientbibliothek:sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
Optional: Wenn Sie die Beispielanwendung
oslogin_service_account_ssh.py
verwenden, laden Sie sie von GoogleCloudPlatform/python-docs-samples herunter:curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
Führen Sie die SSH-Anwendung aus. Die Beispielanwendung verwendet
argparse
, um Variablen von der Befehlszeile zu akzeptieren. In diesem Beispiel wird die Anwendung angewiesen,cowsay
auf einer anderen VM in Ihrem Projekt zu installieren und auszuführen.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=
PROJECT_ID --instance=VM_NAME --zone=ZONE Dabei gilt:
PROJECT_ID
: Die Projekt-ID der VM, zu der die Anwendung eine Verbindung herstellt.VM_NAME
: Der Name der VM, zu der die Anwendung eine Verbindung herstellt.ZONE
: Die Zone der VM, mit der sich die Anwendung verbindet.
Die Ausgabe sieht in etwa so aus:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Nächste Schritte
- Laden Sie das vollständige Codebeispiel herunter und sehen Sie es sich an. Es enthält ein kleines Beispiel für die gemeinsame Verwendung dieser Methoden. Sie können es nach Bedarf herunterladen, ändern und ausführen.
- Erfahren Sie mehr über die Funktionsweise von SSH-Verbindungen in Compute Engine, einschließlich der Konfiguration und Speicherung von SSH-Schlüsseln.