Verbindung zu VMs mit erweiterten Methoden herstellen


Im Allgemeinen werden die besten SSH-Verbindungsmethoden im Dokument Verbindung zu Instanzen herstellen beschrieben. Wenn Sie jedoch Ihre eigenen Anmeldedaten verwalten, Tools von Drittanbietern verwenden oder eine Verbindung über alternative Verbindungspfade herstellen müssen, können die folgenden erweiterten Methoden Ihre Anforderungen möglicherweise besser erfüllen als die Standardmethoden.

Es gibt mehrere erweiterte Methoden, mit denen Sie eine Verbindung zu Linux-VMs herstellen können:

Hinweis

Öffentliche SSH-Schlüssel mit Instanzen verknüpfen

Wenn Sie mithilfe der unter Verbindung zu Instanzen herstellen beschriebenen Methoden eine Verbindung herstellen, erstellt und verwaltet normalerweise Compute Engine die SSH-Schlüssel für Sie.

Wenn Sie jedoch eigene SSH-Schlüssel verwenden müssen, weil Sie z. B. die Verbindung mit Tools von Drittanbietern herstellen möchten, müssen Sie zuerst ein SSH-Schlüsselpaar generieren und die öffentliche SSH-Schlüsseldatei für die Instanz bereitstellen.

Wenn Sie nicht wissen, wie Sie Ihren eigenen SSH-Schlüssel generieren und wie Sie Ihre öffentliche SSH-Schlüsseldatei finden, lesen Sie Neuen SSH-Schlüssel erstellen und SSH-Schlüssel suchen.

Stellen Sie den SSH-Schlüssel mithilfe einer der folgenden Methoden für die Instanz bereit:

  • (Empfohlen) Aktivieren Sie OS Login. OS Login verwendet IAM-Rollen, um der Instanz den öffentlichen SSH-Schlüssel über Ihr Google-Konto oder ein verwaltetes Nutzerkonto zuzuweisen. Eine Anleitung finden Sie unter OS Login einrichten.

    Achten Sie beim Einrichten von OS Login darauf, dass Sie den Schritt zum Hinzufügen von SSH-Schlüsseln zu einem Nutzerkonto ausführen. In diesem Schritt können Sie dem Nutzerkonto, mit dem Sie eine Verbindung zu Ihrer VM herstellen möchten, Ihren öffentlichen Schlüssel hinzufügen.

    Weitere Informationen zu den Vorteilen dieses Features finden Sie unter OS Login.

  • (Nicht empfohlen) Sie können manuell SSH-Schlüssel hinzufügen und entfernen, indem Sie Projekt- oder Instanzmetadaten bearbeiten. Weitere Informationen dazu finden Sie unter SSH-Schlüssel in Metadaten verwalten. Diese Methode bringt unnötige Risiken und erhöhte Komplexität mit sich. Daher wird sie nicht empfohlen, es sei denn, die vorher beschriebene OS Login-Methode kommt für Sie nicht infrage. Siehe hierzu Risiken der manuellen Schlüsselverwaltung.

  • Wenn die Instanz von einer anderen Person verwaltet wird, die bereits Zugriff hat, z. B. einem Systemadministrator Ihrer Organisation, können Sie auch dieser Person die öffentliche SSH-Schlüsseldatei zur Verfügung stellen und sie bitten, diese manuell zu konfigurieren. Dazu stellt die Person in der Regel eine Verbindung zur Instanz her, kopiert die öffentliche Schlüsseldatei in das Basisverzeichnis auf der Instanz und ändert die Berechtigungen für die Datei. Welche Vorgänge nötig sind, hängt jedoch davon ab, wie Ihre Instanzen in der Organisation verwaltet werden.

Verbindung über Drittanbietertools herstellen

Folgen Sie den Schritten für das Betriebssystem auf Ihrer lokalen Workstation, um eine Verbindung herzustellen:

Linux und macOS

Wenn Sie von einem Linux- oder macOS-Computer aus eine SSH-Verbindung herstellen möchten, verwenden Sie den integrierten ssh-Befehl in einem lokalen Terminalfenster:

  1. Wenn Sie dies noch nicht getan haben, geben Sie Ihren öffentlichen SSH-Schlüssel für eine Instanz mit einer der verfügbaren Optionen an. Ohne diesen Schritt können Sie nicht fortfahren.

  2. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite „VM-Instanzen“

  3. Verwenden Sie in einem lokalen Terminal den Befehl ssh zusammen mit Ihrer privaten SSH-Schlüsseldatei, dem Nutzernamen und der externen IP-Adresse der Instanz, zu der eine Verbindung hergestellt werden soll. Beispiel:

    ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    Dabei gilt:

    • PATH_TO_PRIVATE_KEY ist der Pfad zur privaten SSH-Schlüsseldatei.
    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt. Wenn Sie Ihre SSH-Schlüssel in Metadaten verwalten, muss dies der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben. Für OS Login-Konten wird der Nutzername in Ihrem Google-Profil festgelegt.
    • EXTERNAL_IP ist die externe IP-Adresse für Ihre Instanz.

    Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Windows (PuTTY)

Windows hat keinen integrierten SSH-Client. Daher müssen Sie den Client eines Drittanbieters herunterladen und installieren. Nachfolgend erfahren Sie, wie Sie mit PuTTY eine Verbindung herstellen.

So stellen Sie aus Windows über PuTTY eine Verbindung zu einer Instanz her:

  1. Wenn Sie dies noch nicht getan haben, geben Sie Ihren öffentlichen SSH-Schlüssel für eine Instanz mit einer der verfügbaren Optionen an. Ohne diesen Schritt können Sie nicht fortfahren.

  2. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten. Halten Sie die externe IP-Adresse für spätere Schritte bereit.

    Zur Seite „VM-Instanzen“

  3. Laden Sie putty.exe herunter, falls Sie dies noch nicht getan haben.

  4. Öffnen Sie PuTTY, indem Sie putty.exe starten. Es wird ein Fenster zur Verbindungskonfiguration geöffnet.

  5. Geben Sie im Feld Hostname den dem SSH-Schlüssel zugeordneten Nutzernamen und die externe IP-Adresse der Instanz ein, zu der Sie eine Verbindung herstellen möchten. Verwenden Sie das folgende Format:

    USERNAME@EXTERNAL_IP

    Dabei gilt:

    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt. Dies muss der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.
    • EXTERNAL_IP ist die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Sehen Sie sich zur Veranschaulichung den folgenden Screenshot an:

    Screenshot: Im Feld „Hostname“ jane_doe@203.0.113.2 als Beispiel für einen Nutzernamen und eine IP-Adresse eintragen

  6. Gehen Sie unter Kategorie zu Verbindung > SSH-Verbindung > Authentifizierung.

  7. Wechseln Sie im Feld Private key file for authentication zum Speicherort Ihrer privaten Schlüsseldatei.

    Sehen Sie sich zur Veranschaulichung den folgenden Screenshot an:

    Pfad zu my-ssh-key.ppk-Datei im Feld für die private Schlüsseldatei festlegen.

  8. Klicken Sie auf Öffnen, um ein Terminal mit einer Verbindung zu Ihrer Instanz zu öffnen.

Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Chrome OS (SSH-App)

Chromebooks oder Betriebssysteme, auf denen Chrome installiert wurde, verwenden Secure Shell als SSH-Client. Führen Sie die folgenden Schritte aus, um über die Secure Shell App eine Verbindung zu Instanzen herzustellen:

  1. Wenn Sie dies noch nicht getan haben, geben Sie Ihren öffentlichen SSH-Schlüssel für eine Instanz mit einer der verfügbaren Optionen an. Ohne diesen Schritt können Sie nicht fortfahren.

  2. Installieren Sie Secure Shell auf Ihrem Chromebook oder im Chrome-Browser, falls Sie dies noch nicht getan haben.

  3. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten. Halten Sie die externe IP-Adresse für spätere Schritte bereit.

    Zur Seite „VM-Instanzen“

  4. Öffnen Sie die Secure Shell App in einem Tab des Chrome-Browsers. Durch Eingeben von chrome://apps in die Adressleiste können Sie auf Chrome-Apps zugreifen.

  5. Geben Sie den Nutzernamen, der dem SSH-Schlüsselpaar zugeordnet ist, sowie die externe IP-Adresse der Instanz ein, zu der Sie eine Verbindung herstellen möchten. Verwenden Sie das folgende Format:

     USERNAME@EXTERNAL_IP
     

    Dabei gilt:

    • USERNAME ist der Nutzername des Nutzers, der eine Verbindung zur Instanz herstellt. Dies muss der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.
    • EXTERNAL_IP ist die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.
  6. Wählen Sie im Feld Identität die private SSH-Schlüsseldatei aus, mit der Sie eine Verbindung zur Instanz herstellen möchten. Klicken Sie bei Bedarf auf Importieren, um eine private Schlüsseldatei auf Ihrer lokalen Workstation auszuwählen.

  7. Klicken Sie auf Verbinden, um eine Verbindung zur Instanz herzustellen.

Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Weitere SSH-Optionen

Abgesehen von den oben aufgeführten Möglichkeiten können Sie auch auf folgende Weise eine SSH-Verbindung zu einer Instanz herstellen:

Verbindung zu Instanzen herstellen, die keine externen IP-Adressen haben

Wenn eine der Instanzen isoliert ist und keine externe IP-Adresse besitzt, können Sie über ihre internen IP-Adressen und mithilfe eines Google Cloud VPC-Netzwerks dennoch eine Verbindung zur Instanz herstellen. Mit den folgenden Methoden können Sie beispielsweise weiterhin Verbindungen zu VMs herstellen, die Sie absichtlich aus externen Netzwerken isoliert haben:

Verbindung über eine VPN-Verbindung herstellen

Wenn Sie die Verbindung zu einer Instanz ohne externe IP-Adresse über ein VPN (Virtual Private Network) herstellen möchten, beachten Sie:

  • Sie müssen einen Computer verwenden, der die VM-Instanz über einen Cloud VPN-Tunnel erreichen kann.

    Beispiel: Ihr lokales Netzwerk und Ihre Google Cloud VPC teilen sich ein VPN. Stellen Sie in diesem Fall die Verbindung zur Instanz über das gcloud-Befehlszeilentool, SSH unter Linux oder macOS bzw. Drittanbieter-SSH-Clients wie PuTTY unter Windows her.

Weitere Informationen finden Sie auf den folgenden Tabs:

gcloud

Verwenden Sie den Befehl gcloud compute ssh mit dem Flag --internal-ip, um eine Verbindung zu einer Instanz ohne externe IP-Adresse herzustellen.

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die interne IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite „VM-Instanzen“

  2. Stellen Sie eine Verbindung zur Instanz her.

    gcloud compute ssh INTERNAL_INSTANCE_NAME \
        --zone=ZONE \
        --internal-ip
    

    Dabei gilt:

    • INTERNAL_INSTANCE_NAME ist der Name der Instanz, zu der Sie eine Verbindung herstellen möchten.
    • ZONE ist der Name der Zone, in der sich die Instanz befindet.
  3. Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Linux und macOS

So stellen Sie von Linux- oder macOS-Workstations aus eine Verbindung zu einer Instanz ohne externe IP-Adresse her:

  1. Geben Sie Ihren öffentlichen SSH-Schlüssel für eine Instanz mit einer der verfügbaren Optionen an. Ohne diesen Schritt können Sie nicht fortfahren.

  2. Starten Sie ssh-agent auf dem lokalen Computer, um die SSH-Schlüssel zu verwalten:

    eval ssh-agent $SHELL
    
  3. Laden Sie mit dem Befehl ssh-add Ihren privaten SSH-Schlüssel von Ihrem lokalen Computer in den Agent und verwenden Sie ihn zur Authentifizierung aller SSH-Befehle. Ersetzen Sie PRIVATE_KEY durch den Dateinamen Ihrer privaten Schlüsseldatei.

    ssh-add ~/.ssh/PRIVATE_KEY
    
  4. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die interne IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite „VM-Instanzen“

  5. Verwenden Sie in einem lokalen Terminalfenster den Befehl ssh und geben Sie den Nutzernamen, der dem privaten SSH-Schlüssel zugeordnet ist, sowie die interne IP-Adresse der Instanz an, zu der eine Verbindung hergestellt werden soll.

    ssh USERNAME@INTERNAL_INSTANCE_IP_ADDRESS

    Dabei gilt:

    • USERNAME ist der Nutzername des Nutzers, der eine Verbindung zur Instanz herstellt. Dies muss der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.
    • INTERNAL_INSTANCE_IP_ADDRESS ist die interne IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Windows (PuTTY)

So stellen Sie eine Verbindung zu einer Instanz ohne externe IP-Adresse von Windows-Workstations her:

  1. Wenn Sie dies noch nicht getan haben, geben Sie Ihren öffentlichen SSH-Schlüssel für eine Instanz mit einer der verfügbaren Optionen an. Ohne diesen Schritt können Sie nicht fortfahren.

  2. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf und suchen Sie die interne IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite „VM-Instanzen“

  3. Führen Sie die vorherigen Schritte aus, um über PuTTY von Windows eine Verbindung zu einer Instanz herzustellen, aber nehmen Sie folgende Änderung vor:

    • An der Stelle, an der Sie aufgefordert werden, eine externe IP-Adresse anzugeben, geben Sie stattdessen die interne Adresse der Instanz an, zu der Sie eine Verbindung herstellen möchten.

Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Verbindung über einen Bastion Host herstellen

Eine andere Methode, um eine Verbindung zu einer Instanz herzustellen, die keine externe IP-Adresse hat, besteht darin, die Verbindung über einen Bastion Host herzustellen. Wenn Sie einen Bastion Host verwenden, können Sie auch eine Verbindung zu Instanzen in anderen Peering-VPC-Netzwerken herstellen.

Wenn Sie über einen Bastion Host eine Verbindung zu einer Instanz herstellen möchten, verwenden Sie unter Linux und macOS entweder das gcloud-Befehlszeilentool oder SSH. Unter Windows verwenden Sie den SSH-Client eines Drittanbieters wie PuTTY.

Wenn Sie über einen Bastion Host eine Verbindung zu anderen Instanzen herstellen, ist ein privater SSH-Schlüssel erforderlich. Es gibt mehrere Möglichkeiten, diesen zu verwalten:

  • Installieren Sie das gcloud-Befehlszeilentool und konfigurieren Sie es so, dass es Ihre privaten Schlüssel verwaltet.
  • Leiten Sie den privaten Schlüssel an die als Bastion Host fungierende Instanz weiter, indem Sie die Agent-Weiterleitung in Ihrem SSH-Client aktivieren.

In den folgenden Beispielen finden Sie vollständige Schritte:

gcloud

Mit dem gcloud-Befehlszeilentool können Sie eine Verbindung zu Instanzen herstellen, die keine externen IP-Adressen haben, ohne Ihre privaten SSH-Schlüssel an den Bastion Host weiterleiten zu müssen. Dazu müssen Sie gcloud sowohl auf Ihrer lokalen Workstation als auch auf der als Bastion Host fungierenden Instanz installieren, falls nicht bereits geschehen.

Verwenden Sie das gcloud-Befehlszeilentool, um eine Verbindung zu einer Instanz ohne externe IP-Adresse herzustellen:

  1. Legen Sie für das Dienstkonto in der als Bastion Host fungierenden Instanz einen Lese-/Schreibzugriffsbereich der Compute Engine API fest, indem Sie --scopes compute-rw in den Befehl aufnehmen. Weitere Informationen finden Sie unter Dienstkonto und Zugriffsbereiche für eine Instanz ändern.

  2. Erteilen Sie die erforderlichen IAM-Berechtigungen, damit der Bastion Host auf die öffentlichen SSH-Schlüssel zugreifen kann. Verwenden Sie dazu entweder OS Login (empfohlen) oder die Projektmetadaten. Verwenden Sie eine der folgenden Methoden:

    Das Dienstkonto auf Ihrem Bastion Host ist jetzt in der Lage, Ihren öffentlichen SSH-Schlüssel anzuwenden.

  3. Stellen Sie eine Verbindung zur als Bastion Host fungierenden Linux-Instanz her. Ersetzen Sie EXTERNAL_INSTANCE_NAME durch den Namen der als Bastion Host fungierenden Instanz, über die Sie auf das interne Netzwerk zugreifen.

    gcloud compute ssh EXTERNAL_INSTANCE_NAME
    
  4. Verwenden Sie auf der als Bastion Host fungierenden Linux-Instanz den Befehl gcloud compute ssh mit dem Flag --internal-ip, um eine Verbindung zu Instanzen über deren interne IP-Adressen herzustellen.

    gcloud compute ssh INTERNAL_INSTANCE_NAME --internal-ip
    

    Ersetzen Sie INTERNAL_INSTANCE_NAME durch den Namen der Instanz, zu der Sie eine Verbindung herstellen möchten.

Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Linux und macOS

Wenn Sie private Schlüssel an die als Bastion Host fungierende Instanz weiterleiten müssen, fügen Sie die Schlüssel dem ssh-agent hinzu. Verwenden Sie anschließend entweder den Befehl gcloud compute ssh oder den Befehl ssh, um die Erstverbindung zum Bastion Host herzustellen und die Schlüssel über den SSH-Agent weiterzuleiten. Diese Vorgehensweise funktioniert nur auf Linux- oder macOS-Workstations. Wenn Sie private Schlüssel von einer Windows-Workstation an einen Bastion Host weiterleiten müssen, folgen Sie den Anleitungen für PuTTY.

So stellen Sie eine Verbindung zu einer Instanz ohne externe IP-Adresse von Linux- oder Mac OS-Workstations her:

  1. Geben Sie Ihren öffentlichen SSH-Schlüssel mit einer der verfügbaren Optionen an. Achten Sie darauf, diesen öffentlichen SSH-Schlüssel sowohl der als Bastion Host fungierenden Linux-Instanz als auch der Instanz ohne externe IP-Adresse zur Verfügung zu stellen.

  2. Starten Sie ssh-agent auf dem lokalen Computer, um die SSH-Schlüssel zu verwalten:

    eval ssh-agent $SHELL
    
  3. Laden Sie mit dem Befehl ssh-add Ihren privaten SSH-Schlüssel von Ihrem lokalen Computer in den Agent. Wenn Sie SSH-Befehle hinzugefügt haben, wird automatisch die private SSH-Schlüsseldatei zur Authentifizierung verwendet.

    $ ssh-add ~/.ssh/PRIVATE_KEY
    

    Ersetzen Sie PRIVATE_KEY durch den Namen Ihrer privaten Schlüsseldatei.

  4. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen. Suchen Sie in der Spalte Externe IP-Adresse die externe IP-Adresse der als Bastion Host fungierenden Linux-Instanz. Suchen Sie in der Spalte Interne IP-Adresse die interne IP-Adresse der internen Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite „VM-Instanzen“

  5. Stellen Sie die Verbindung zu der als Bastion Host fungierenden Linux-Instanz über ssh oder gcloud compute ssh her. Geben Sie in beiden Fällen das Argument -A an, um die Weiterleitung an den Authentifizierungs-Agent zu aktivieren.

    Stellen Sie die Verbindung zu der als Bastion Host fungierenden Linux-Instanz her und leiten Sie Ihre privaten Schlüssel mit ssh weiter.

    ssh -A USERNAME@BASTION_HOST_EXTERNAL_IP

    Dabei gilt:

    • USERNAME ist der mit Ihrem SSH-Schlüssel verknüpfte Name.
    • BASTION_HOST_EXTERNAL_IP ist die externe IP-Adresse der als Bastion Host fungierenden Instanz, die Sie für den Zugriff auf das interne Netzwerk verwenden.

    Alternativ können Sie eine Verbindung zum Bastion Host herstellen und Ihre privaten Schlüssel mit dem Befehl gcloud compute ssh weiterleiten. Mit dieser Option können Sie eine Verbindung zu der als Bastion Host fungierenden Instanz über das gcloud-Befehlszeilentool herstellen und dann das reguläre ssh mit den weitergeleiteten Anmeldedaten verwenden, wenn Sie eine Verbindung zu internen IP-Adressen herstellen.

    gcloud compute ssh --ssh-flag="-A" BASTION_HOST_INSTANCE_NAME
    

    Ersetzen Sie BASTION_HOST_INSTANCE_NAME durch den Namen der als Bastion Host fungierenden Instanz, die Sie für den Zugriff auf das interne Netzwerk verwenden.

  6. Stellen Sie über die Bastion Hostinstanz unter Linux eine SSH-Verbindung zur Instanz her, die keine externe IP-Adresse hat:

    ssh USERNAME@INTERNAL_INSTANCE_IP_ADDRESS

    Dabei gilt:

    • USERNAME ist der mit Ihrem SSH-Schlüssel verknüpfte Name.
    • INTERNAL_INSTANCE_IP_ADDRESS ist die interne IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Windows

So stellen Sie eine Verbindung zu einer Instanz ohne externe IP-Adresse von Windows-Workstations her:

  1. Geben Sie Ihren öffentlichen SSH-Schlüssel mit einer der verfügbaren Optionen an. Achten Sie darauf, diesen öffentlichen SSH-Schlüssel sowohl der als Bastion Host fungierenden Linux-Instanz als auch der Instanz ohne externe IP-Adresse zur Verfügung zu stellen.

  2. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen. Suchen Sie in der Spalte Externe IP-Adresse die externe IP-Adresse der als Bastion Host fungierenden Linux-Instanz. Suchen Sie in der Spalte Interne IP-Adresse die interne IP-Adresse der internen Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite „VM-Instanzen“

  3. Stellen Sie über PuTTY die Verbindung zur als Bastion Host fungierenden Linux-Instanz her. Aktivieren Sie die Option Allow agent forwarding, um den privaten SSH-Schlüssel an den Bastion Host weiterzuleiten, wie im folgenden Screenshot dargestellt:

    Agent-Weiterleitung für die Instanz zulassen, zu der eine Verbindung hergestellt werden soll

  4. Stellen Sie über die Bastion Hostinstanz unter Linux eine SSH-Verbindung zur Instanz her, die keine externe IP-Adresse hat:

    ssh USERNAME@INTERNAL_IP_ADDRESS
    

    Dabei gilt:

    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt. Dies muss der Nutzername sein, den Sie beim Erstellen des SSH-Schlüssels angegeben haben.
    • INTERNAL_IP_ADDRESS ist die interne IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Nachdem Sie die Verbindung hergestellt haben, führen Sie Befehle für die Instanz über dieses Terminalfenster aus. Wenn Sie die Instanz nicht mehr benötigen, trennen Sie die Verbindung mit dem Befehl exit.

Verbindung über IAP herstellen

Wenn Sie SSH mit der TCP-Weiterleitungsfunktion von IAP verwenden, wird eine SSH-Verbindung in HTTPS eingebunden. Die TCP-Weiterleitungsfunktion von IAP sendet die URL dann an die Remoteinstanz.

  1. Weisen Sie dem Nutzer, der eine Verbindung zur VM herstellen möchte, die Rolle roles/iap.tunnelResourceAccessor zu.

  2. Stellen Sie eine Verbindung zur VM her.

    gcloud compute ssh INSTANCE_NAME --zone ZONE
    

    Dabei gilt:

    • INSTANCE_NAME ist der Name der Instanz, zu der Sie eine Verbindung herstellen möchten.
    • ZONE ist der Name der Zone, in der sich die Instanz befindet.

Weitere Informationen zum Konfigurieren von kontextsensitiven Zugriffsregeln und zum Zugriff auf andere TCP-Ports auf der VM finden Sie unter TCP-Weiterleitung verwenden.

Verbindung zu Instanzen als Root-Nutzer herstellen

Standardmäßig ist es mit öffentlichen Images und unter den meisten gängigen Betriebssystemen nicht möglich, eine Root-Anmeldung über SSH durchzuführen. Sie können mit Instanzen nur dann eine SSH-Verbindung als Root-Nutzer herstellen, wenn Sie diese entsprechend konfigurieren.

Als Best Practice hat es sich bewährt, den Parameter PermitRootLogin der SSH-Konfigurationsdatei /etc/ssh/sshd_config auf no einzustellen. Aufgrund dieses Parameters können Sie als Root-Nutzer keine Verbindung zu einer Instanz herstellen, auch wenn Sie in Ihrem Projekt oder in den Instanzmetadaten einen SSH-Schlüssel für root angeben. Wenn ein Nutzer Root-Berechtigungen benötigt, kann er diese durch Ausführen von Befehlen über sudo erlangen.

Wenn Sie eine Instanz so konfiguriert haben, dass sie SSH-Verbindungen als Root-Nutzer zulässt, und auf dieser Instanz einen SSH-Schlüssel für den Root-Nutzer konfigurieren, können Sie mit dem Befehl gcloud compute ssh eine Verbindung als Root-Nutzer herstellen, wenn Sie vor dem Instanznamen root@ angeben:

gcloud compute ssh \
    --project=PROJECT_ID \
    --zone=ZONE \
    root@INSTANCE_NAME

Dabei gilt:

  • PROJECT_ID ist die ID des Projekts, das die Instanz enthält.
  • ZONE: Der Name der Zone, in der sich die Instanz befindet.
  • INSTANCE_NAME: der Name der Instanz

Als Dienstkonto manuell Verbindungen zwischen Instanzen herstellen

In manchen Situationen möchten Sie möglicherweise eine Verbindung zu Instanzen herstellen und Befehle als das dieser Instanz zugeordnete Dienstkonto ausführen. Mit dem Befehl gcloud compute ssh können Sie die SSH-Anmeldedaten eines Dienstkontos verwenden, um eine Verbindung von einer Instanz zu einer anderen herzustellen und auf der zweiten Instanz im Namen des Dienstkontos Befehle auszuführen.

Das gcloud-Befehlszeilentool generiert automatisch ein SSH-Schlüsselpaar und weist es dem Dienstkonto auf Ihrer Instanz zu. Nachdem Sie im Namen des Dienstkontos eine Verbindung zu einer anderen Instanz hergestellt haben, können Sie mithilfe der IAM-Berechtigungen des Dienstkontos weitere gcloud-Befehle ausführen.

In folgendem Beispiel wird davon ausgegangen, dass Ihre Umgebung so aussieht:

  • Instanz A:
    • Instanz A ist ein Dienstkonto zugeordnet.
    • Das Instanz A zugeordnete Dienstkonto hat die erforderlichen OS Login-Rollen, die entweder auf Projektebene oder speziell für Instanz B konfiguriert wurden.
    • Das Dienstkonto hat für Instanz A den plattformweiten Zugriffsbereich https://www.googleapis.com/auth/cloud-platform.
  • Instanz B:
    • Instanz B wird entweder im selben internen Netzwerk wie Instanz A oder in einem Netzwerk mit Firewallregeln ausgeführt, die SSH-Verbindungen von Instanz A zulassen.
    • Für Ihr Projekt oder speziell für Instanz B ist das OS Login-Feature aktiviert.
  • Ihr privates Nutzerkonto:
    • Das Konto hat die roles/iam.serviceAccountUser-Rolle für das Dienstkonto, das Instanz A zugeordnet ist.
    • Das Konto hat SSH-Zugriff auf Instanz A.
    • Ihr Konto hat keinen Zugriff auf Instanz B. Das Dienstkonto ist das einzige Konto mit den OS Login-Rollen, die erforderlich sind, um eine Verbindung zu Instanz B herzustellen.

Stellen Sie eine Verbindung zu Instanz A her und führen Sie im Namen des Dienstkontos Befehle aus. Dazu müssen Sie die Rolle roles/iam.serviceAccountUser für dieses Dienstkonto haben:

  1. Stellen Sie jetzt als Nutzer mit der Rolle roles/iam.serviceAccountUser eine Verbindung zu Instanz A her. Sie können beispielsweise das gcloud-Befehlszeilentool verwenden, um diese erste SSH-Verbindung herzustellen:

    gcloud compute ssh instance-a --project=PROJECT_ID --zone=ZONE
  2. Solange Sie die Rolle roles/iam.serviceAccountUser haben, können Sie Befehle wie ein Dienstkonto ausführen, nachdem Sie eine SSH-Verbindung zu Instanz A hergestellt haben. In diesem Beispiel führen Sie das gcloud-Befehlszeilentool auf Instanz A aus, um eine Ketten-SSH-Verbindung zu Instanz B herzustellen. Das gcloud-Tool erkennt, dass für Instanz B OS Login aktiviert ist und dass das Dienstkonto die erforderlichen IAM-Rollen hat, um eine SSH-Verbindung zu Instanz B herzustellen.

    gcloud compute ssh instance-b --project=PROJECT_ID --zone=ZONE

    Die Ausgabe sieht etwa so aus:

    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. Sie sind jetzt als das Dienstkonto mit Instanz B verbunden und können im Namen dieses Dienstkontos Befehle ausführen, beispielsweise:

    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
    

Nächste Schritte