Durch erweiterte Methoden mit Instanzen verbinden

Wenn Sie Ihre Anmeldedaten selbst verwalten, Tools von Drittanbietern verwenden oder mit anderen Verbindungsmöglichkeiten Verbindungen zu Instanzen herstellen müssen, sind die folgenden erweiterten Methoden möglicherweise besser für Sie geeignet als die unter Verbindung zu Instanzen herstellen beschriebenen Standardmethoden.

Es existieren verschiedene erweiterte Methoden, um eine Verbindung zu Linux- und Windows Server-Instanzen herzustellen:

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 öffentliche SSH-Schlüsseldatei für die Instanz bereitstellen.

Wenn Sie nicht wissen, wie Sie ein SSH-Schlüsselpaar generieren und wie Sie dann die öffentliche SSH-Schlüsseldatei finden, lesen Sie die Abschnitte 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 und verwenden Sie IAM-Rollen, um der Instanz den öffentlichen SSH-Schlüssel über Ihr Google-Konto oder ein verwaltetes Nutzerkonto zuzuweisen. Führen Sie die Schritte unter Zugriff auf Instanzen mit OS Login verwalten aus, um OS Login zu aktivieren und die Rollen zu erstellen. Lesen Sie dann den Abschnitt SSH-Schlüssel zu Nutzerkonten hinzufügen, um den öffentlichen Schlüssel zu der Rolle hinzuzufügen, die Sie für das Verbinden mit der Instanz verwenden möchten.

  • (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. Weitere Informationen finden Sie unter 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

Nachdem Sie der Instanz den öffentlichen SSH-Schlüssel zugewiesen haben, können Sie SSH-Tools von Drittanbietern zusammen mit dem passenden privaten SSH-Schlüssel verwenden, um eine Verbindung herzustellen.

Klicken Sie zum Herstellen einer Verbindung auf den Tab für Ihr lokales Betriebssystem und führen Sie die aufgeführten Schritte aus:

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. Weisen Sie einer Instanz den öffentlichen SSH-Schlüssel zu, indem Sie eine der verfügbaren Optionen verwenden, falls noch nicht geschehen. Sie müssen diesen Schritt ausführen, um fortfahren zu können.

  2. Wechseln Sie in der Console zur Seite "VM-Instanzen" oder klicken Sie auf die Schaltfläche unten und suchen Sie die externe IP-Adresse für die Instanz heraus, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite "VM-Instanzen"

  3. Verwenden Sie in einem lokalen Terminalfenster den Befehl ssh zusammen mit der privaten SSH-Schlüsseldatei, dem diesem SSH-Schlüssel zugeordneten 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_ADDRESS]

    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 die SSH-Schlüssel manuell erstellt haben, muss dies der Nutzername sein, den Sie beim Erstellen der SSH-Schlüssel angegeben haben.
    • [EXTERNAL_IP_ADDRESS] ist die externe IP-Adresse der 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 verwenden möchten, 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. Weisen Sie einer Instanz den öffentlichen SSH-Schlüssel zu, indem Sie eine der verfügbaren Optionen verwenden, falls noch nicht geschehen. Sie müssen diesen Schritt ausführen, um fortfahren zu können.

  2. Wechseln Sie in der Console zur Seite "VM-Instanzen" oder klicken Sie auf die Schaltfläche unten und suchen Sie die externe IP-Adresse für die Instanz heraus, zu der Sie eine Verbindung herstellen möchten. Halten Sie diese für spätere Schritte bereit.

    Zur Seite "VM-Instanzen"

  3. Laden Sie putty.exe herunter, falls noch nicht geschehen.

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

    [USERNAME]@[EXTERNAL_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.
    • [EXTERNAL_IP_ADDRESS] ist die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.

      Sehen Sie sich zur Veranschaulichung den folgenden Screenshot an:

      Im Feld "Hostname" jane_doe@203.0.113.2 eintragen

  6. Klicken Sie im Menü Category (Kategorie) auf der linken Seite auf Connection (Verbindung) > SSH > Auth (Authentifizierung).

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

    Sehen Sie sich zur Veranschaulichung den folgenden Screenshot an:

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

  8. Klicken Sie auf Open (Ö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 verwenden möchten, trennen Sie die Verbindung mit dem Befehl exit.

Chrome (Secure Shell App)

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

  1. Weisen Sie einer Instanz den öffentlichen SSH-Schlüssel zu, indem Sie eine der verfügbaren Optionen verwenden, falls noch nicht geschehen. Sie müssen diesen Schritt ausführen, um fortfahren zu können.

  2. Installieren Sie die Secure Shell App auf Ihrem Chromebook oder den Chrome-Browser, falls noch nicht geschehen.

  3. Wechseln Sie in der Console zur Seite "VM-Instanzen" oder klicken Sie auf die Schaltfläche unten und suchen Sie die externe IP-Adresse für die Instanz heraus, zu der Sie eine Verbindung herstellen möchten. Halten Sie diese für spätere Schritte bereit.

    Zur Seite "VM-Instanzen"

  4. Öffnen Sie die Secure Shell App in einem Tab des Chrome-Browsers.

  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_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.
    • [EXTERNAL_IP_ADDRESS] ist die externe IP-Adresse der Instanz, zu der Sie eine Verbindung herstellen möchten.
  6. Wählen Sie im Feld Identity (Identität) die private SSH-Schlüsseldatei aus, mit der Sie eine Verbindung zur Instanz herstellen möchten. Klicken Sie bei Bedarf auf Import (Importieren), um eine private Schlüsseldatei auf Ihrer lokalen Workstation auszuwählen.

  7. Klicken Sie auf Connect (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 verwenden möchten, 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 Instanz herstellen, die keine externe IP-Adresse hat

Wenn eine der Instanzen isoliert ist und keine externe IP-Adresse besitzt, z. B. weil sie absichtlich von externen Netzwerken isoliert wurde, können Sie über ihre interne IP-Adresse und mithilfe eines Google Cloud Platform-VPC-Netzwerks (Virtual Private Cloud) dennoch eine Verbindung zur Instanz herstellen. Dies ist mit den im Folgenden beschriebenen Methoden möglich.

Verbindung über ein VPN herstellen

Wenn Sie die Verbindung zu einer Instanz ohne externe IP-Adresse über ein VPN (Virtual Private Network) herstellen möchten, müssen Sie einen Computer haben, der bereits mit demselben VPN wie die Instanz verbunden ist. Wenn sich beispielsweise Ihr lokales Netzwerk und Ihre GCP-VPC ein VPN teilen, stellen Sie 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

Stellen Sie die Verbindung zu einer Instanz ohne externe IP-Adresse her, indem Sie den Befehl gcloud compute ssh mit dem Flag --internal-ip verwenden:

gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip

Dabei ist [INTERNAL_INSTANCE_NAME] der Name 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 verwenden möchten, trennen Sie die Verbindung mit dem Befehl exit.

Linux und macOS

Gehen Sie so vor, um von einer Linux- oder MacOS-Workstation aus eine Verbindung zu einer Instanz ohne externe IP-Adresse herzustellen:

  1. Geben Sie Ihren öffentlichen SSH-Schlüssel für eine Instanz mit einer der verfügbaren Optionen an. Sie müssen diesen Schritt ausführen, um fortfahren zu können.

  2. Starten Sie ssh-agent auf dem lokalen Rechner, um die 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 für alle SSH-Befehle zur Authentifizierung.

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    Dabei ist [PRIVATE_KEY] der Dateiname Ihrer privaten Schlüsseldatei.

  4. Wechseln Sie in der Console zur Seite "VM-Instanzen" oder klicken Sie auf die Schaltfläche unten und suchen Sie die interne IP-Adresse der Instanz heraus, zu der Sie eine Verbindung herstellen möchten.

    [Zur Seite "VM-Instanzen"](https://console.cloud.google.com/compute/instances){: class="button button-primary" target="console" track-type="tasks" track-name="consoleLink" track-metadata-position="body" track-metadata-end-goal="attachDisk"}

    1. Verwenden Sie in einem lokalen Terminalfenster den Befehl ssh zusammen mit dem Ihrem privaten SSH-Schlüssel zugeordneten Nutzernamen und der internen IP-Adresse der Instanz, zu der eine Verbindung hergestellt werden soll. Beispiel:
    $ ssh [USERNAME]@[INTERNAL_INSTANCE_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_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 verwenden möchten, trennen Sie die Verbindung mit dem Befehl exit.

Windows (PuTTY)

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

  1. Weisen Sie einer Instanz den öffentlichen SSH-Schlüssel zu, indem Sie eine der verfügbaren Optionen verwenden, falls noch nicht geschehen. Sie müssen diesen Schritt ausführen, um fortfahren zu können.

  2. Wechseln Sie in der Console zur Seite "VM-Instanzen" oder klicken Sie auf die Schaltfläche unten und suchen Sie die interne IP-Adresse der Instanz heraus, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite "VM-Instanzen"

  3. Stellen Sie unter Windows mit PuTTY eine Verbindung zu einer Instanz her, geben Sie jedoch statt der externen die interne IP-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 verwenden möchten, trennen Sie die Verbindung mit dem Befehl exit.

Verbindung über einen Bastion Host herstellen

Sie können auch über einen Bastion Host eine Verbindung zu einer Instanz ohne externe IP-Adresse herstellen. 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 wie bei den anderen Methoden auch 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 Ihre privaten Schlüssel verwaltet werden.
  • Leiten Sie den privaten Schlüssel an die als Bastion Host fungierende Instanz weiter, indem Sie die Agent-Weiterleitung in Ihrem SSH-Client aktivieren.

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.

So stellen Sie mit dem gcloud-Befehlszeilentool eine Verbindung zu einer Instanz her, die keine externe IP-Adresse hat:

  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.

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

  3. Stellen Sie eine Verbindung zur als Bastion Host fungierenden Linux-Instanz her:

    gcloud compute ssh [EXTERNAL_INSTANCE_NAME]
    

    Dabei ist [EXTERNAL_INSTANCE_NAME] der Name der als Bastion Host fungierenden Instanz, über die Sie auf das interne Netzwerk zugreifen.

  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 die zugehörigen internen IP-Adressen herzustellen:

    gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip
    

    Dabei ist [INTERNAL_INSTANCE_NAME] der Name 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 verwenden möchten, 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 Workstations mit Linux oder Mac OS. 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 Rechner, um die 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 für alle SSH-Befehle zur Authentifizierung.

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    Dabei ist [PRIVATE_KEY] der Dateiname Ihrer privaten Schlüsseldatei.

  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 mit den Instanzen jeweils in den Spalten Externe IP-Adresse und Interne IP-Adresse.

    Zur Seite "VM-Instanzen"

  5. Stellen Sie die Verbindung zur 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 zur als Bastion Host fungierenden Linux-Instanz her und leiten Sie Ihre privaten Schlüssel mit ssh weiter.

    $ ssh -A [USERNAME]@[BASTION_HOST_EXTERNAL_IP_ADDRESS]

    Dabei gilt:

    • [USERNAME] ist der mit Ihrem SSH-Schlüssel verknüpfte Name.
    • [BASTION_HOST_EXTERNAL_IP_ADDRESS] ist die externe IP-Adresse der als Bastion Host fungierenden Instanz, über die Sie auf das interne Netzwerk zugreifen.

    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 die Verbindung zur als Bastion Host fungierenden Instanz über das gcloud-Befehlszeilentool herstellen und dann das reguläre ssh mit den weitergeleiteten Anmeldedaten verwenden, um die Verbindung zu den internen IP-Adressen aufzubauen.

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

    Dabei ist [BASTION_HOST_INSTANCE_NAME] der Name der als Bastion Host fungierenden Instanz, über die Sie auf das interne Netzwerk zugreifen.

  6. Stellen Sie mithilfe von SSH von der als Bastion Host fungierenden Linux-Instanz aus eine Verbindung zu der 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 verwenden möchten, 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. 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 mit den 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 (Agent-Weiterleitung zulassen), um den privaten SSH-Schlüssel an den Bastion Host weiterzuleiten, wie im folgenden Screenshot gezeigt:

    Agent-Weiterleitung für die Instanz zulassen, zu der Sie eine Verbindung herstellen

  4. Stellen Sie mithilfe von SSH von der als Bastion Host fungierenden Linux-Instanz aus eine Verbindung zu der Instanz ohne externe IP-Adresse her:

    $ 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 verwenden möchten, trennen Sie die Verbindung mit dem Befehl exit.

Verbindung über Cloud IAP herstellen

Wenn Sie SSH mit dem TCP-Weiterleitungsfeature von Cloud IAP verwenden, wird eine SSH-Verbindung in HTTPS eingebunden. Das TCP-Weiterleitungsfeature von Cloud IAP sendet sie dann an die Remoteinstanz.

Informationen dazu, wie Sie eine Verbindung zu einer Remoteinstanz mit Cloud IAP herstellen, finden Sie unter Cloud IAP für 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 dieser Parametereinstellung können Sie als Root-Nutzer keine Verbindung zu einer Instanz herstellen, selbst 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 diese 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 einer Windows-Instanz über PowerShell herstellen

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

  1. Wenn Sie auf der Remoteinstanz von Windows Server noch keinen Nutzernamen und kein Passwort erstellt haben, erstellen Sie Ihr Windows-Passwort oder setzen Sie es zurück.

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

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

  4. Optional 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 zum Verwenden von SSL und zum Überspringen der Anmeldedatenprüfungen an.

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

    Dabei ist [IP_ADDRESS] die externe IP-Adresse, der DNS-Name oder der Windows-Computername der Instanz, zu der Sie eine Verbindung herstellen möchten.

    Zur Seite "VM-Instanzen"

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 Name des Windows-Computers für die Instanz, zu der Sie eine Verbindung herstellen möchten.
  • [SCRIPT] enthält mindestens einen Befehl, der auf der Remoteinstanz 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 ausführen, als ob Sie das Dienstkonto wären, das dieser Instanz zugeordnet ist. 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.
    • Das Konto hat keinen Zugriff auf Instanz B. Das Dienstkonto ist das einzige Konto mit den OS Login-Rollen, die für die Verbindung zu Instanz B erforderlich sind.

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 ausführen, als ob Sie das Dienstkonto wären, 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-Befehlszeilentool erkennt, dass Instanz B für die OS Login-Nutzung 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

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation