Durch erweiterte Methoden mit Instanzen verbinden


Im Allgemeinen werden die besten SSH-Verbindungsmethoden auf der Seite 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, die Sie für Verbindungen zu Linux- und Windows Server-Instanzen verwenden können:

Vorbereitung

Ö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 Datei mit dem öffentlichen SSH-Schlüssel 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

    Ersetzen Sie dabei folgende Parameter:

    • path-to-private-key ist der Pfad zur privaten SSH-Schlüsseldatei.

    • username ist der Nutzername 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 auf der Verbindungskonfigurationsseite im Feld Hostname den Nutzernamen, der dem SSH-Schlüssel zugeordnet ist, sowie die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten, im folgenden Format ein:

    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

  6. Klicken Sie im Menü Category auf der linken Seite auf Connection > SSH > Auth.

  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 im folgenden Format den dem SSH-Schlüsselpaar zugeordneten Nutzernamen und die externe IP-Adresse der Instanz ein, zu der Sie eine Verbindung herstellen möchten:

     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 Sie Instanzen isoliert haben, die keine externe IP-Adresse besitzen, können Sie über deren interne IP-Adressen und mithilfe eines Google Cloud VPC-Netzwerks (Virtual Private Cloud) dennoch eine Verbindung zu diesen Instanzen herstellen. Sie können beispielsweise weiterhin eine Verbindung zu VM-Instanzen herstellen, die Sie absichtlich von externen Netzwerken isolieren, indem Sie die folgenden Methoden verwenden:

Verbindung über eine VPN-Verbindung herstellen

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

  • 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 bzw. macOS oder 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 dem privaten SSH-Schlüssel zugeordneten Nutzernamen und die interne IP-Adresse der Instanz an, zu der eine Verbindung hergestellt werden soll.

    $ ssh username@internal-instance-ip-address

    Ersetzen Sie dabei folgende Parameter:

    • 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 aus 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 oben genannten Schritte aus, um mit PuTTY aus 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.

Weitere Informationen zu den vollständigen Schritten finden Sie in den folgenden Beispielen:

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 weiterzuleiten. 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 zu der 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. Ersetzen Sie internal-instance-name durch den Namen der Instanz, zu der Sie eine Verbindung herstellen möchten.

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

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 der Anleitung für PuTTY.

So stellen Sie eine Verbindung zu einer Instanz ohne externe IP-Adresse von Linux- oder macOS-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 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. Suchen Sie nach der externen IP-Adresse der als Bastion Host fungierenden Linux-Instanz und der internen IP-Adresse der internen Instanz, zu der Sie eine Verbindung herstellen möchten. Sie finden diese Adressen auf der Seite VM-Instanzen jeweils in den Spalten Externe IP-Adresse und Interne IP-Adresse.

    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. 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.

    gcloud compute ssh --ssh-flag="-A" bastion-host-instance-name
    
  6. Stellen Sie von der als Bastion Host fungierenden Linux-Instanz aus über SSH die Verbindung zur Instanz ohne externe IP-Adresse her:

    $ 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. Suchen Sie nach der externen IP-Adresse der als Bastion Host fungierenden Linux-Instanz und der internen IP-Adresse der internen Instanz, zu der Sie eine Verbindung herstellen möchten. Sie finden diese Adressen auf der Seite VM-Instanzen jeweils in den Spalten Externe IP-Adresse und Interne IP-Adresse.

    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 von der als Bastion Host fungierenden Linux-Instanz über SSH die Verbindung zur Instanz ohne externe IP-Adresse her:

    $ ssh username@internal-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-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 sie 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 ist der Name der Zone, in der sich die Instanz befindet.
  • instance-name ist der Name der Instanz.

Verbindung zu Windows-Instanzen über das PowerShell-Terminal herstellen

Wenn Sie eine Windows-Workstation mit PowerShell haben, können Sie über eine Remote-PowerShell-Sitzung eine Verbindung zu Ihren Windows Server-Instanzen herstellen. Dieser Vorgang ähnelt dem Herstellen einer Verbindung zu einer Linux-Instanz unter Verwendung von SSH.

  1. Wenn Sie noch keinen Nutzernamen und kein Passwort auf der Remote-Windows-Instanz erstellt haben, erstellen Sie ein Windows-Passwort oder setzen Sie es zurück.

  2. Fügen Sie eine Firewallregel hinzu, die Port 5986 in dem Google Cloud-VPC-Netzwerk öffnet, in dem sich die Windows Server-Instanz befindet.

  3. Öffnen Sie das PowerShell-Terminal auf Ihrer lokalen Workstation.

  4. Alternativ können Sie eine Variable initialisieren, die Ihre Anmeldedaten aufnimmt, damit Sie diese nicht jedes Mal eingeben müssen, wenn Sie eine Verbindung zu der Instanz herstellen. Wenn Sie diesen Schritt überspringen, werden Sie später dazu aufgefordert, Ihren Nutzernamen und Ihr Passwort einzugeben.

    PS C:\> $credentials = Get-Credential
    
  5. Starten Sie mit dem Befehl Enter-PSSession eine Remote-PowerShell-Sitzung und geben Sie dabei die Flags zur Verwendung von SSL und zum Überspringen der Anmeldedatenprüfungen an. Ersetzen Sie ip-address durch die externe IP-Adresse, den DNS-Namen oder den Windows-Computernamen der Instanz, zu der Sie eine Verbindung herstellen möchten.

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

Wenn die Verbindung hergestellt wurde, ändert sich die Eingabeaufforderung und enthält nun die IP-Adresse der Remoteinstanz von Windows Server. Sie können das Terminal nun nutzen, um PowerShell-Befehle auf der Remoteinstanz von Windows Server auszuführen.

Anstelle des Befehls Enter-PSSession können Sie auch Invoke-Command mit dem Flag -ScriptBlock ausführen. Dann werden PowerShell-Befehle auf der Remoteinstanz ausgeführt, ohne eine interaktive Sitzung einzurichten.

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

Dabei gilt:

  • ip-address ist die IP-Adresse, der DNS-Name oder der Windows-Computername für die Instanz, zu der Sie eine Verbindung herstellen möchten.
  • script ist mindestens ein Befehl, der auf der Remote-Instanz ausgeführt werden soll. Geben Sie zum Beispiel Get-EventLog -log "Windows PowerShell" an, um eine Liste der Logereignisse abzurufen.

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:

    my-username@localworkstation:~$ gcloud compute ssh instance-a \
    --project my-project \
    --zone us-east1-d
    
  2. Nachdem Sie die SSH-Verbindung zu Instanz A hergestellt haben, können Sie Befehle im Namen des Dienstkontos ausführen, solange Sie die Rolle roles/iam.serviceAccountUser 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 die OS Login-Nutzung für Instanz B aktiviert wurde. Außerdem erkennt es, dass das Dienstkonto die für das Herstellen einer SSH-Verbindung zu Instanz B erforderlichen IAM-Rollen hat.

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

    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
    

Weitere Informationen