In diesem Dokument wird beschrieben, wie Sie mithilfe einer Bastion Host-VM eine Verbindung zu einer VM-Instanz über ihre interne IP-Adresse herstellen. Bastion Hosts bieten einen externen Einstiegspunkt in ein VPC-Netzwerk (Virtual Private Cloud), das VMs ohne externe IP-Adressen enthält. Wenn Sie einen Bastion Host verwenden, stellen Sie zuerst eine Verbindung zum Bastion Host und dann zur Ziel-VM her.
Eine VM über ihre interne IP-Adresse zu verbinden, ist hilfreich, wenn die VM keine externe IP-Adresse hat. Wenn die VM eine externe IP-Adresse hat, stellen Sie über die externe IP-Adresse eine Verbindung zur VM her. Wenn Sie eine Verbindung zu einer VM herstellen müssen, die keine externen IP-Adressen hat und Sie keinen Bastion Host verwenden können, lesen Sie die anderen Methoden unter Verbindungsoption für ausschließlich interne VMs auswählen.
Unterstützte Betriebssysteme
Compute Engine unterstützt diese Verbindungsmethoden für alle öffentlichen Linux-Images. Für Fedora CoreOS-Images müssen Sie den SSH-Zugriff einrichten, bevor Sie diese Methoden verwenden können.
Bastion-Host-VM erstellen
Erstellen Sie eine Compute Engine-VM im Ziel-VPC-Netzwerk, die als Bastion Host fungiert.
Console
So erstellen Sie eine Bastion-Host-VM:
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Geben Sie die folgenden VM-Details an:
Name: Der Name Ihrer VM.
Maschinentyp: Ein Maschinentyp. Wählen Sie einen kleinen Maschinentyp wie
e2-microaus.Bootlaufwerk > Betriebssystem: Ein beliebiges Linux-Betriebssystem.
Maximieren Sie den Abschnitt Erweiterte Optionen und tun Sie Folgendes:
Wählen Sie im Abschnitt Netzwerkschnittstellen das VPC-Netzwerk und das Subnetz aus, in dem sich auch die Ziel-VM befindet.
Wählen Sie für Externe IPv4-Adresse die Option Sitzungsspezifisch aus.
Klicken Sie zum Erstellen und Starten der VM auf Erstellen.
gcloud
Erstellen Sie mit dem Befehl gcloud compute instances create eine Bastion-Host-VM:
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Erstellen Sie die Bastion-Host-VM mit dem folgenden Befehl:
gcloud compute instances create BASTION_NAME \ --zone=ZONE \ --machine-type=e2-micro \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --network-interface=subnet=SUBNET
Ersetzen Sie Folgendes:
BASTION_NAME: der Name der Bastion Host-VM.ZONE: die Zone für die Bastion Host-VM.IMAGE_FAMILY: eine Linux-Image-Familie.IMAGE_PROJECT: Das Image-Projekt, das das Image enthält.SUBNET: dasselbe VPC-Subnetz wie die Ziel-VM. Wenn Sie das Standard-VPC-Netzwerk verwenden, setzen SieSUBNETaufdefault.
Verbindung zu VMs herstellen
Führen Sie die Schritte auf einem der folgenden Tabs aus, um eine Verbindung zu einer VM herzustellen.
gcloud
Stellen Sie über einen Bastion Host eine Verbindung zu einer VM her, indem Sie SSH verwenden und den Befehl gcloud compute ssh ausführen:
Stellen Sie mit folgendem Befehl eine Verbindung zur Bastion Host-VM her:
gcloud compute ssh BASTION_NAME \ --project=PROJECT_ID \ --zone=ZONEErsetzen Sie Folgendes:
BASTION_NAME: der Name der Bastion Host-VM.PROJECT_ID: die ID des Projekts, das die Bastion Host-VM enthält.ZONE: Der Name der Zone, in der sich die Bastion Host-VM befindet.
Stellen Sie von der Bastion Host-VM aus eine Verbindung zur Ziel-VM über ihre interne IP-Adresse her. Verwenden Sie dazu das Flag
--internal-ip:gcloud compute ssh INSTANCE_NAME \ --zone=TARGET_ZONE \ --internal-ipErsetzen Sie Folgendes:
INSTANCE_NAMEist der Name der VM, zu der Sie eine Verbindung herstellen möchten.TARGET_ZONE: der Name der Zone, in der sich die Ziel-VM befindet.
OpenSSH-Client
So stellen Sie über einen OpenSSH-Client eine Verbindung zu einer VM über einen Bastion Host her:
- Wenn Sie noch keinen SSH-Schlüssel hinzugefügt haben, fügen Sie der Bastion Host-VM und der Ziel-VM einen SSH-Schlüssel hinzu.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die externe IP-Adresse der Bastion Host-VM und die interne IP-Adresse der VM, zu der Sie eine Verbindung herstellen möchten.
- Öffnen Sie ein Terminal in Ihrer Workstation.
Stellen Sie mit dem folgenden Befehl eine Verbindung zur Bastion Host-VM her:
ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Ersetzen Sie Folgendes:
PATH_TO_PRIVATE_KEY: Der Pfad zur privaten SSH-Schlüsseldatei, die dem öffentlichen Schlüssel entspricht, den Sie der VM hinzugefügt haben, z. B.~/.ssh/my-ssh-keyoder~/.ssh/google_compute_engine, wenn die Google Cloud CLI den Schlüssel generiert hat.USERNAME: muss dies der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.-
EXTERNAL_IP: die externe IP-Adresse der Bastion Host-VM.
Stellen Sie von der Bastion Host-VM aus mit dem folgenden Befehl eine Verbindung über die interne IP-Adresse einer VM her:
ssh USERNAME@INTERNAL_IP
Ersetzen Sie Folgendes:
USERNAME: muss dies der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.INTERNAL_IP: die interne IP-Adresse der VM
PuTTY-Anwendung
So stellen Sie über einen Bastion Host mit PuTTY eine Verbindung zu einer VM her:
- Wenn Sie noch keinen SSH-Schlüssel hinzugefügt haben, fügen Sie der Bastion Host-VM und der Ziel-VM einen SSH-Schlüssel hinzu.
- Wenn auf der Workstation die PuTTY-Anwendung noch nicht installiert ist, laden Sie die PuTTY-Paketdateien herunter.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die externe IP-Adresse der Bastion Host-VM und die interne IP-Adresse der VM, zu der Sie eine Verbindung herstellen möchten.
- Öffnen Sie die PuTTY-App. Es wird ein Fenster zur Verbindungskonfiguration geöffnet.
Geben Sie im Feld Hostname (oder IP-Adresse) den dem SSH-Schlüssel zugeordneten Nutzernamen und die externe IP-Adresse der Bastion Host-VM ein. Verwenden Sie das folgende Format:
USERNAME@EXTERNAL_IP
Ersetzen Sie Folgendes:
USERNAME: muss dies der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.-
EXTERNAL_IP: die externe IP-Adresse der Bastion Host-VM.
- Gehen Sie im Menü Kategorie zu Verbindung > SSH > Authentifizierung > Anmeldedaten (oder Verbindung > SSH > Authentifizierung in PuTTY-Versionen vor 0.78).
- Klicken Sie im Feld Private Schlüsseldatei zur Authentifizierung auf Durchsuchen und wählen Sie die private SSH-Schlüsseldatei (
.ppk) aus, die dem öffentlichen Schlüssel entspricht, den Sie der VM hinzugefügt haben. - Gehen Sie im Menü Kategorie zu Verbindung > SSH > Authentifizierung und wählen Sie im Abschnitt Authentifizierungsparameter die Option Agentenweiterleitung zulassen aus.
- Klicken Sie auf Öffnen, um eine Verbindung zur Bastion Host-VM herzustellen.
Stellen Sie von der Bastion Host-VM aus mit dem folgenden Befehl eine Verbindung über die interne IP-Adresse einer VM her:
ssh USERNAME@INTERNAL_IP
Ersetzen Sie Folgendes:
USERNAME: muss dies der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.INTERNAL_IP: die interne IP-Adresse der VM
Fehlerbehebung
Methoden zur Diagnose und Behebung von fehlerhaften SSH-Verbindungen finden Sie unter Fehlerbehebung für SSH.
Weitere Informationen
- Informationen zum Übertragen von Dateien auf VMs
- Mehr darüber erfahren, wie SSH-Verbindungen zu Linux-VMs in Compute Engine funktionieren.