SSH-Schlüssel in Metadaten verwalten

In diesem Leitfaden wird beschrieben, wie Sie den Zugriff auf eine Linux-Instanz steuern. Dazu erstellen Sie manuell SSH-Schlüssel und bearbeiten die Metadaten öffentlicher SSH-Schlüssel. Lesen Sie Zugriffsmethode auswählen, um zu prüfen, ob das Verwalten von SSH-Schlüsseln in Metadaten für Ihren Anwendungsfall die beste Wahl ist.

Sie können auch über die Google Cloud Console eine Verbindung zu Instanzen herstellen, wobei Compute Engine dann automatisch den gesamten Lebenszyklus Ihrer Schlüssel verwaltet. Alternativ können Sie das gcloud-Befehlszeilentool im SDK verwenden, wobei Compute Engine dann die nichtflüchtigen Metadaten für die SSH-Schlüssel konfiguriert.

Wenn Sie ein erfahrener Nutzer sind, der SSH-Schlüssel manuell verwalten muss, verwalten Sie den Zugriff auf Instanzen mit OS Login. Metadatenbasierte SSH-Schlüsselkonfigurationen für die betreffenden Instanzen werden dann deaktiviert.

Vorbereitung

Erforderliche Berechtigungen für diese Aufgabe

Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen:

  • compute.instances.setMetadata für die Instanz, wenn Metadaten für die Instanz festgelegt werden
  • compute.projects.setCommonInstanceMetadata für das Projekt, wenn projektweite Metadaten festgelegt werden
  • iam.serviceAccounts.actAs für das Projekt, wenn projektweite Metadaten festgelegt werden

Risiken der manuellen Schlüsselverwaltung

Wenn Sie öffentliche SSH-Schlüssel manuell über die Cloud Console, das gcloud-Befehlszeilentool oder die API erstellen und verwalten, müssen Sie einen Überblick über die verwendeten Schlüssel behalten und öffentliche SSH-Schlüssel für Nutzer löschen, die keinen Zugriff mehr haben sollen. Wenn beispielsweise ein Teammitglied Ihr Projekt verlässt, müssen dessen öffentliche SSH-Schlüssel aus den Metadaten entfernt werden, damit ein weiterer Zugriff auf die Instanzen nicht mehr möglich ist.

Darüber hinaus können durch Aufrufe mit falschen Angaben im gcloud-Tool oder in der API alle öffentlichen SSH-Schlüssel in Ihrem Projekt oder auf Ihren Instanzen gelöscht werden, was zur Unterbrechung der Verbindungen Ihrer Projektmitglieder führt.

Wenn Sie sich nicht sicher sind, ob Sie Ihre Schlüssel selbst verwalten sollten, verwenden Sie stattdessen die Compute Engine-Tools, um eine Verbindung zu Ihren Instanzen herzustellen.

Überblick

Durch das Erstellen und Verwalten von SSH-Schlüsseln können Sie Nutzern ermöglichen, über Drittanbietertools auf eine Linux-Instanz zuzugreifen.

Ein SSH-Schlüssel besteht aus den folgenden Dateien:

  • Einer öffentlichen SSH-Schlüsseldatei, die auf Metadaten auf Instanzebene oder auf projektweite Metadaten angewendet wird
  • Einer privaten SSH-Schlüsseldatei, die der Nutzer auf seinen lokalen Geräten speichert

Wenn ein Nutzer seinen privaten SSH-Schlüssel präsentiert, kann er mithilfe eines Drittanbietertools eine Verbindung zu einer beliebigen Instanz herstellen, die für die entsprechende öffentliche SSH-Schlüsseldatei konfiguriert ist, selbst wenn er kein Mitglied des Google Cloud-Projekts ist. Sie können also steuern, auf welche Instanzen ein Nutzer zugreifen kann. Dazu ändern Sie die öffentlichen SSH-Schlüsselmetadaten für eine oder mehrere Instanzen.

So bearbeiten Sie öffentliche SSH-Schlüsselmetadaten:

  1. Wählen Sie das Tool zum Bearbeiten von Metadaten aus:

    • Mit der Google Cloud Console können Sie Metadaten in Ihrem Browser bearbeiten.
    • Wenn Sie lieber mit der Befehlszeile arbeiten, können Sie zum Bearbeiten von Metadaten das gcloud-Befehlszeilentool verwenden.
    • Wenn Sie ein erfahrener Nutzer sind, können Sie die Verwaltung von öffentlichen SSH-Schlüsseln mit API-Methoden automatisieren.
  2. Wenn Sie Nutzer zu einer Linux-Instanz hinzufügen müssen, bereiten Sie die entsprechenden öffentlichen SSH-Schlüssel mithilfe folgender Prozesse vor:

  3. Bearbeiten Sie die Metadaten öffentlicher SSH-Schlüssel, um Nutzer zu einer Linux-Instanz hinzuzufügen oder von dieser zu entfernen.

  4. Stellen Sie über ein Drittanbietertool eine Verbindung zu Ihrer Linux-Instanz her, um sicherzustellen, dass alle öffentlichen SSH-Schlüssel korrekt hinzugefügt oder entfernt wurden. Ein Nutzer kann nur dann eine Verbindung zu einer Instanz herstellen, wenn sein öffentlicher SSH-Schlüssel über den Metadatenserver für die Instanz verfügbar ist und er über den entsprechenden privaten SSH-Schlüssel verfügt.

Neue SSH-Schlüssel erstellen

Wenn Sie keine bestehende private SSH-Schlüsseldatei und keine entsprechende öffentliche SSH-Schlüsseldatei haben, die Sie verwenden können, müssen Sie einen neuen SSH-Schlüssel generieren. Wenn Sie einen vorhandenen SSH-Schlüssel verwenden möchten, müssen Sie die öffentliche SSH-Schlüsseldatei suchen.

Linux und macOS

Auf Linux- oder macOS-Workstations können Schlüssel mit dem ssh-keygen-Tool erzeugt werden.

  1. Öffnen Sie auf der Workstation ein Terminalfenster und erzeugen Sie einen neuen Schlüssel mit dem Befehl ssh-keygen. Geben Sie das Flag -C an, um einen Kommentar mit Ihrem Nutzernamen hinzuzufügen.

    ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
        

    Dabei gilt:

    • [KEY_FILENAME] ist der Name, den Sie für Ihre SSH-Schlüsseldateien verwenden möchten. Der Dateiname my-ssh-key erzeugt beispielsweise die private Schlüsseldatei my-ssh-key und die öffentliche Schlüsseldatei my-ssh-key.pub.
    • [USERNAME] ist der Nutzername für den Nutzer, der eine Verbindung zur Instanz herstellt.

    Dieser Befehl generiert eine private SSH-Schlüsseldatei und einen entsprechenden öffentlichen SSH-Schlüssel mit der folgenden Struktur:

        ssh-rsa [KEY_VALUE] [USERNAME]
        

    Dabei gilt:

    • [KEY_VALUE] ist der generierte Schlüsselwert.
    • [USERNAME] ist der Nutzer, für den dieser Schlüssel gilt.
  2. Beschränken Sie den Zugriff auf den privaten Schlüssel, sodass nur Sie ihn lesen können und er von niemandem geändert werden kann.

    chmod 400 ~/.ssh/[KEY_FILENAME]
        

    Dabei ist [KEY_FILENAME] der Name, den Sie für Ihre SSH-Schlüsseldateien verwendet haben.

Wiederholen Sie diesen Vorgang für jeden Nutzer, der einen neuen Schlüssel benötigt. Dann suchen Sie die selbst erstellten öffentlichen SSH-Schlüssel sowie alle vorhandenen öffentlichen SSH-Schlüssel, die Sie zu einem Projekt oder einer Instanz hinzufügen möchten.

Windows

Windows hat kein integriertes Tool zum Erzeugen von SSH-Schlüsseln. Wenn Sie mit einer Windows-Workstation arbeiten, müssen Sie deshalb ein Drittanbietertool verwenden, um SSH-Schlüssel zu erzeugen. So generieren Sie SSH-Schlüssel mit dem PuTTYgen-Tool:

  1. Laden Sie puttygen.exe herunter.

  2. Führen Sie PuTTYgen aus. In diesem Beispiel führen Sie die Datei puttygen.exe aus, die Sie heruntergeladen haben. Es öffnet sich ein Fenster, in dem Sie die Einstellungen für die Schlüsselerzeugung konfigurieren können.

  3. Klicken Sie auf Generate (Generieren) und folgen Sie der Anleitung auf dem Bildschirm, um einen neuen Schlüssel zu erzeugen. In den meisten Fällen können Sie die Standardparameter einfach übernehmen. Die generierten Schlüssel müssen aber mindestens 2.048 Bit haben. Wenn Sie den Schlüssel generiert haben, zeigt das Tool den Wert des öffentlichen Schlüssels an.

  4. Ersetzen Sie im Abschnitt Key comment (Schlüsselkommentar) den vorhandenen Text durch den Nutzernamen des Nutzers, für den der Schlüssel angewendet werden soll.

  5. Sie haben die Möglichkeit, zum Schutz des Schlüssels eine Key passphrase (Schlüssel-Passphrase) einzugeben.

  6. Klicken Sie auf Save private key (Privaten Schlüssel speichern), um den privaten Schlüssel in einer Datei mit der Endung .ppk zu speichern.

  7. Klicken Sie auf Save public key (Öffentlichen Schlüssel speichern), um den öffentlichen Schlüssel zur späteren Verwendung in einer Datei zu speichern. Lassen Sie das PuTTYgen-Fenster vorerst geöffnet.

    Der korrekt formatierte öffentliche Schlüssel wird oben im PuTTYgen-Bildschirm angezeigt:

    Öffentlicher PuTTYgen-Schlüssel

    Dieser öffentliche Schlüssel hat die folgende Struktur:

        ssh-rsa [KEY_VALUE] [USERNAME]
        

    Dabei gilt:

    • [KEY_VALUE] ist der generierte Schlüsselwert.
    • [USERNAME] ist der Nutzer, für den dieser Schlüssel gilt.

Wiederholen Sie diesen Vorgang für jeden Nutzer, für den ein Schlüssel erstellt werden muss. Wenn weitere SSH-Schlüssel für Nutzer vorliegen, die Sie einem Projekt oder einer Instanz hinzufügen möchten, sollten Sie die entsprechenden öffentlichen SSH-Schlüssel jetzt suchen. Ansonsten formatieren Sie die öffentlichen SSH-Schlüssel, die Sie erstellt haben.

SSH-Schlüssel suchen

Es kann aus mehreren Gründen erforderlich sein, einen SSH-Schlüssel zu suchen. Wenn Sie beispielsweise den öffentlichen SSH-Schlüssel eines Nutzers einem Projekt oder einer Instanz hinzufügen möchten, benötigen Sie Zugriff auf die öffentliche Schlüsseldatei für den Schlüssel. Alternativ müssen Sie möglicherweise Ihre private SSH-Schlüsseldatei suchen, um eine Verbindung zu einer Linux-Instanz herzustellen.

Wird ein SSH-Schlüssel erstellt, wird er an einem Standardspeicherort gespeichert. Die Standardspeicherorte und -namen Ihrer öffentlichen und privaten SSH-Schlüsseldateien hängen von den Tools ab, mit denen der Schlüssel erstellt wurde.

Linux und macOS

Wenn Sie das ssh-keygen-Tool verwendet haben, um einen Schlüssel auf einer Linux- oder macOS-Workstation zu erstellen, wurde der Schlüssel an den folgenden Orten gespeichert:

  • Öffentliche Schlüsseldatei: ~/.ssh/[KEY_FILENAME].pub
  • Private Schlüsseldatei: ~/.ssh/[KEY_FILENAME]

Dabei ist [KEY_FILENAME] der Dateiname des SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.

Wenn Sie den öffentlichen SSH-Schlüssel in die Metadaten eines Projekts oder einer Instanz einfügen oder daraus entfernen müssen, formatieren Sie die öffentliche SSH-Schlüsseldatei.

Windows

Wenn Sie das PuTTYgen-Tool verwendet haben, um ein Schlüsselpaar auf einer Windows-Workstation zu erstellen, wurden Ihre öffentliche und Ihre private Schlüsseldatei an den Orten gespeichert, die Sie so festgelegt haben:

  • Öffentlicher Schlüssel: [PUBLIC_KEY_FILENAME]
  • Privater Schlüssel: [PRIVATE_KEY_FILENAME].ppk

Dabei sind [PUBLIC_KEY_FILENAME] und [PRIVATE_KEY_FILENAME] die Dateinamen der öffentlichen und privaten SSH-Schlüssel, die beim erstmaligen Speichern des Schlüssels festgelegt wurden.

Ein standardmäßiger öffentlicher SSH-Schlüssel, der mit PuTTYgen erstellt wurde, sollte das folgende Format haben:

    ssh-rsa [KEY_VALUE] [USERNAME]
    

Dabei gilt:

  • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
  • [USERNAME] ist der Nutzer auf der Instanz, für den der Schlüssel angewendet wurde.

So zeigen Sie den öffentlichen SSH-Schlüssel in PuTTYgen mit der korrekten Formatierung an:

  1. Führen Sie PuTTYgen aus. Wenn Sie das Tool nicht haben, laden Sie puttygen.exe herunter und führen Sie die Datei aus.

  2. Klicken Sie auf Load (Laden), um Ihre öffentliche SSH-Schlüsseldatei auszuwählen und zu öffnen.

  3. Wenn die öffentliche Schlüsseldatei geladen wurde, wird der öffentliche SSH-Schlüsselwert mit der korrekten Formatierung oben im PuTTYgen-Bildschirm angezeigt:

    Öffentlicher PuTTYgen-Schlüssel

Wenn Sie den öffentlichen SSH-Schlüssel in die Metadaten eines Projekts oder einer Instanz einfügen oder daraus entfernen müssen, formatieren Sie die öffentliche SSH-Schlüsseldatei.

gcloud

Wenn Sie bereits eine Verbindung zu einer Instanz über das gcloud-Tool hergestellt haben, sind die Schlüssel bereits generiert und werden auf das Projekt oder die Instanz angewendet. Die Schlüsseldateien befinden sich an den folgenden Speicherorten:

  • Linux und macOS
    • Öffentlicher Schlüssel: $HOME/.ssh/google_compute_engine.pub
    • Privater Schlüssel: $HOME/.ssh/google_compute_engine
  • Windows
    • Öffentlicher Schlüssel: C:\Users\[USERNAME]\.ssh\google_compute_engine.pub
    • Privater Schlüssel: C:\Users\[USERNAME]\.ssh\google_compute_engine

Dabei ist [USERNAME] Ihr Nutzername auf der lokalen Workstation.

Wenn Sie wissen möchten, wo Ihre öffentlichen SSH-Schlüssel angewendet werden, suchen Sie in den Projektmetadaten und in den Instanzmetadaten nach dem öffentlichen Schlüssel. Wenn Sie den öffentlichen SSH-Schlüssel den Metadaten eines Projekts oder einer Instanz hinzufügen oder daraus entfernen müssen, formatieren Sie die öffentliche SSH-Schlüsseldatei.

Öffentliche SSH-Schlüsseldateien formatieren

Bevor Sie Ihre öffentlichen SSH-Schlüssel in die Projekt- oder Instanzmetadaten laden können, müssen Sie das Format jeder öffentlichen Schlüsseldatei prüfen, die Sie einfügen möchten.

Je nachdem, welches Tool Sie zur Bearbeitung von Metadaten verwenden, formatieren Sie die Schlüssel für die Cloud Console, das gcloud-Befehlszeilentool oder die API-Methoden. Optional können Sie Ihre öffentlichen SSH-Schlüssel ändern, um Ablaufzeiten hinzuzufügen, zu bearbeiten oder zu entfernen.

Console

So prüfen Sie das Format eines öffentlichen SSH-Schlüssels:

  1. Suchen und öffnen Sie die öffentliche SSH-Schlüsseldatei.

  2. Prüfen Sie das Format der öffentlichen SSH-Schlüsseldatei.

    • Ein öffentlicher SSH-Schlüssel, der ein Ablaufdatum enthält, muss das folgende Format haben:

          ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}

      Dabei gilt:

      • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
      • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
      • [EXPIRE_TIME] ist ein Wert im ISO 8601-Format. Beispiel: 2018-12-04T20:12:00+0000.
    • Ansonsten muss der öffentliche SSH-Schlüssel das folgende Format haben:

          ssh-rsa [KEY_VALUE] [USERNAME]

      Dabei gilt:

      • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
      • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
  3. Wenn Ihr Schlüssel nicht mit einem der obigen Formate übereinstimmt oder wenn Sie eine Ablaufzeit einfügen, bearbeiten oder entfernen möchten, folgen Sie zur Formatierung des öffentlichen SSH-Schlüssels der nachstehenden Anleitung. Ansonsten lassen Sie die Datei geöffnet und fügen den öffentlichen SSH-Schlüssel den Projekt- oder Instanzmetadaten hinzu.

So formatieren Sie einen öffentlichen SSH-Schlüssel für die Console:

  1. Erstellen Sie eine Kopie Ihrer öffentlichen Schlüsseldatei. Verwenden Sie die Kopie für Compute Engine und bewahren Sie die Originaldatei zur Verwendung mit den anderen SSH-Konfigurationen auf.

  2. Öffnen Sie die Kopie Ihrer öffentlichen Schlüsseldatei.

  3. Ändern Sie die öffentliche Schlüsseldatei so, dass sie das folgende Format aufweist:

        ssh-rsa [KEY_VALUE] [USERNAME]

    Dabei gilt:

    • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
    • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.

    Wenn der öffentliche SSH-Schlüssel eine Ablaufzeit enthalten soll, können Sie das Format der Datei auch so ändern:

        ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}

    Dabei gilt:

    • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
    • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
    • [EXPIRE_TIME] ist ein Wert im ISO 8601-Format. Beispiel: 2018-12-04T20:12:00+0000.
  4. Speichern Sie die Änderungen und lassen Sie die Datei geöffnet.

Jetzt können Sie den öffentlichen SSH-Schlüssel zu Projekt- oder Instanzmetadaten hinzufügen.

gcloud oder API

So prüfen Sie das Format eines öffentlichen SSH-Schlüssels:

  1. Suchen und öffnen Sie die öffentliche SSH-Schlüsseldatei.

  2. Prüfen Sie das Format der öffentlichen SSH-Schlüsseldatei.

    • Ein öffentlicher SSH-Schlüssel, der ein Ablaufdatum enthält, muss das folgende Format haben:

          [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}

      Dabei gilt:

      • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
      • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
      • [EXPIRE_TIME] ist ein Wert im ISO 8601-Format. Beispiel: 2018-12-04T20:12:00+0000.
    • Ansonsten muss der öffentliche SSH-Schlüssel das folgende Format haben:

          [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]

      Dabei gilt:

      • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
      • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
  3. Wenn Ihr Schlüssel nicht mit einem der obigen Formate übereinstimmt oder wenn Sie eine Ablaufzeit einfügen, bearbeiten oder entfernen möchten, folgen Sie zur Formatierung des öffentlichen SSH-Schlüssels der nachstehenden Anleitung. Ansonsten lassen Sie die Datei geöffnet und fügen den öffentlichen SSH-Schlüssel Projekt- oder Instanzmetadaten hinzu.

So formatieren Sie einen öffentlichen SSH-Schlüssel für das gcloud-Tool oder die API:

  1. Erstellen Sie eine Kopie Ihrer öffentlichen Schlüsseldatei. Verwenden Sie die Kopie für Compute Engine und bewahren Sie die Originaldatei zur Verwendung mit den anderen SSH-Konfigurationen auf.

  2. Öffnen Sie die Kopie Ihrer öffentlichen Schlüsseldatei. Standardmäßig sollte die Datei dieses Format haben:

        ssh-rsa [KEY_VALUE] [USERNAME]

    Dabei gilt:

    • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
    • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
  3. Kopieren Sie den Nutzernamen, der sich am Ende der Datei befindet, und fügen Sie ihn am Anfang der Datei gefolgt von einem Doppelpunkt ein. Die öffentliche SSH-Schlüsseldatei sollte jetzt dieses Format haben:

        [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]

    Dabei gilt:

    • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
    • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
  4. Optional können Sie die Ablaufzeit des Schlüssels festlegen. Löschen Sie dazu den zweiten [USERNAME] und fügen Sie den Wert google-ssh am Ende der Schlüsseldatei ein, gefolgt von den Feldern userName und expireOn im JSON-Format.

        [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}

    Dabei gilt:

    • [USERNAME] ist der Nutzer dieses SSH-Schlüssels, der beim Erstellen des Schlüssels festgelegt wurde.
    • [KEY_VALUE] ist der Wert des öffentlichen SSH-Schlüssels.
    • [EXPIRE_TIME] ist ein Wert im ISO 8601-Format. Beispiel: 2018-12-04T20:12:00+0000
  5. Speichern Sie die Änderungen und lassen Sie die Datei geöffnet.

Jetzt können Sie den öffentlichen SSH-Schlüssel zu Projekt- oder Instanzmetadaten hinzufügen.

Öffentliche SSH-Schlüsselmetadaten bearbeiten

Der Nutzerzugriff auf eine Linux-Instanz mithilfe von Drittanbietertools hängt davon ab, welche öffentlichen SSH-Schlüssel für die Instanz verfügbar sind. Sie können festlegen, welche öffentlichen SSH-Schlüssel für eine Linux-Instanz verfügbar sind. Dazu bearbeiten Sie die Metadaten, in denen Ihre öffentlichen SSH-Schlüssel und die zugehörigen Informationen gespeichert sind. Es gibt drei Arten von Metadaten für Ihre öffentlichen SSH-Schlüssel:

  • Projektweite öffentliche SSH-Schlüssel: Verwenden Sie diese Metadaten, um den Nutzern allgemeinen Zugriff zu gewähren und damit die Möglichkeit zu geben, eine Verbindung zu den meisten Instanzen Ihres Projekts herzustellen.
  • Projektweite öffentliche SSH-Schlüssel zulassen oder blockieren: Verwenden Sie diesen Metadatenwert, um projektweite öffentliche SSH-Schlüssel auf einer bestimmten Instanz zu blockieren oder zuzulassen. Standardmäßig lässt eine Instanz alle projektweiten öffentlichen SSH-Schlüssel zu. Blockieren Sie projektweite öffentliche SSH-Schlüssel, wenn Sie den Instanzzugriff auf Nutzer mit öffentlichen SSH-Schlüsseln auf Instanzebene beschränken möchten.
  • Öffentliche SSH-Schlüssel auf Instanzebene: Verwenden Sie diese Metadaten, um Nutzern einen Sonderzugriff zu gewähren und damit die Möglichkeit zu geben, eine Verbindung zu einer bestimmten Instanz in Ihrem Projekt herzustellen, selbst wenn projektweite öffentliche SSH-Schlüssel blockiert werden.

Projektweite öffentliche SSH-Schlüssel hinzufügen oder entfernen

Verwenden Sie projektweite öffentliche SSH-Schlüssel, um Nutzern allgemeinen Zugriff auf eine Linux-Instanz zu gewähren. Projektweite öffentliche SSH-Schlüssel ermöglichen Nutzern den Zugriff auf alle Linux-Instanzen in einem Projekt, die projektweite öffentliche SSH-Schlüssel zulassen. Wenn eine Instanz projektweite öffentliche SSH-Schlüssel sperrt, kann ein Nutzer mit seinem projektweiten öffentlichen SSH-Schlüssel keine Verbindung zu der Instanz herstellen, es sei denn, der gleiche öffentliche SSH-Schlüssel wird auch den Instanzmetadaten hinzugefügt.

Console

So können Sie vorgehen, um projektweite öffentliche SSH-Schlüssel in der Cloud Console hinzuzufügen oder zu entfernen:

  1. Rufen Sie in der Google Cloud Console die Seite "Metadaten" für Ihr Projekt auf.

    Zur Seite "Metadaten"

  2. Klicken Sie unter SSH-Schlüssel auf Bearbeiten.

  3. Ändern Sie die projektweiten öffentlichen SSH-Schlüssel:

    • Zum Einfügen eines öffentlichen SSH-Schlüssels klicken Sie auf Element hinzufügen. Es wird ein Textfeld geöffnet.
    • Kopieren Sie den Inhalt Ihrer öffentlichen SSH-Schlüsseldatei und fügen Sie diesen in das Textfeld ein.

      Wiederholen Sie diesen Vorgang für jeden öffentlichen SSH-Schlüssel, den Sie einfügen möchten.

    • Zum Entfernen eines öffentlichen SSH-Schlüssels klicken Sie auf die Entfernen-Schaltfläche neben dem Schlüssel:

      Öffentlicher PuTTYgen-Schlüssel

      Wiederholen Sie diesen Vorgang für jeden öffentlichen SSH-Schlüssel, den Sie entfernen möchten.

  4. Wenn Sie mit der Bearbeitung der SSH-Schlüssel fertig sind, klicken Sie auf Speichern.

gcloud

So fügen Sie projektweite öffentliche SSH-Schlüssel mit dem gcloud-Tool hinzu oder entfernen diese:

  1. Wenn in Ihrem Projekt bereits projektweite öffentliche SSH-Schlüssel vorhanden sind, können Sie diese aus den Metadaten abrufen:

    1. Rufen Sie die vorhandenen Metadaten des Projekts ab:

      gcloud compute project-info describe
          
    2. Suchen Sie in der Ausgabe nach dem Metadatenwert ssh-keys:

      ...
          metadata:
            fingerprint: QCofVTHlggs=
            items:
            - key: ssh-keys
              value: |-
                [USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]
                [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
          ...
          

      Dabei gilt:

      • [USERNAME_1] und [USERNAME_2] sind die Nutzernamen für Ihre vorhandenen Schlüssel.
      • [EXISTING_KEY_VALUE_1] und [EXISTING_KEY_VALUE_2] sind die Werte öffentlicher Schlüssel, die bereits auf das Projekt angewendet wurden.
    3. Kopieren Sie die öffentlichen SSH-Schlüssel.

  2. Erstellen und öffnen Sie eine neue Textdatei auf Ihrer lokalen Workstation.

  3. Erstellen Sie in der Datei eine Liste aller öffentlichen SSH-Schlüssel, die Sie in Projektmetadaten einfügen oder beibehalten möchten. Wenn projektweite Schlüssel vorliegen, werden alle Schlüssel entfernt, die Sie nicht in die Liste aufnehmen.

    Die folgende Beispielliste sorgt dafür, dass der Schlüssel für [USERNAME_1] entfernt wird, da der SSH-Schlüssel dieses Nutzers ausgelassen wurde. Der SSH-Schlüssel für [USERNAME_2] wird dagegen beibehalten und der SSH-Schlüssel für [USERNAME_3] wird hinzugefügt, weil beide Schlüssel in der Liste enthalten sind.

    [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
        [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]
        

    Dabei gilt:

    • [USERNAME_1], [USERNAME_2] und [USERNAME_3] sind die Nutzernamen der öffentlichen SSH-Schlüssel.
    • [EXISTING_KEY_VALUE_1] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie entfernen möchten.
    • [EXISTING_KEY_VALUE_2] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie behalten möchten.
    • [NEW_KEY_VALUE] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie hinzufügen möchten.
  4. Speichern und schließen Sie die Datei.

  5. Geben Sie in der Eingabeaufforderung den Befehl compute project-info add-metadata ein, um den projektweiten ssh-keys-Wert einzustellen. Fügen Sie das Flag --metadata-from-file hinzu und geben Sie den Pfad zu Ihrer Listendatei an.

    gcloud compute project-info add-metadata --metadata-from-file ssh-keys=[LIST_PATH]
        

    Dabei ist [LIST_PATH] der Pfad zu Ihrer Liste öffentlicher SSH-Schlüssel.

API

Mit der Methode instances.setMetadata können Sie projektweite öffentliche Schlüssel hinzufügen oder entfernen.

  1. Mit der Methode projects.get rufen Sie den fingerprint-Metadatenwert ab. Wenn Sie Ihre vorhandenen projektweiten Schlüssel beibehalten möchten, müssen Sie die vorhandenen ssh-keys-Werte abrufen.

        GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]
        
        ...
        "fingerprint": "[FINGERPRINT]",
        "items": [
         {
          "key": "ssh-keys",
          "value": "[USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
         }
        ]
        ...

    Dabei gilt:

    • [PROJECT_ID] ist die eindeutige Projekt-ID.
    • [FINGERPRINT] ist die eindeutige ID für diese spezifische Metadatenkonfiguration, die das unbeabsichtigte Überschreiben gleichzeitiger Änderungen verhindert.
    • [USERNAME_1] und [USERNAME_2] sind die Nutzernamen für Ihre vorhandenen Schlüssel.
    • [EXISTING_KEY_VALUE_1] und [EXISTING_KEY_VALUE_2] sind die Werte öffentlicher Schlüssel, die bereits auf das Projekt angewendet wurden.
  2. Sie erstellen eine Liste aller öffentlichen SSH-Schlüssel, die Sie Projektmetadaten hinzufügen oder dort beibehalten möchten. Wenn öffentliche SSH-Schlüssel in projektweiten Metadaten vorliegen, werden alle Schlüssel entfernt, die Sie nicht in die Liste aufnehmen.

    In diesem Beispiel enthält die Datei einen neuen [KEY_VALUE], gefolgt von einem der vorhandenen Schlüsselwerte, die Sie im vorherigen Schritt abgerufen haben. [EXISTING_KEY_VALUE_1] wird ausgelassen und deshalb im nächsten Schritt aus der Instanz entfernt. Verwenden Sie \n, um die Schlüsselwerte voneinander zu trennen.

    [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
        

    Dabei gilt:

    • [USERNAME_1], [USERNAME_2] und [USERNAME_3] sind die Nutzernamen für Ihre Schlüssel.
    • [EXISTING_KEY_VALUE_1] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie entfernen möchten.
    • [EXISTING_KEY_VALUE_2] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie behalten möchten.
    • [NEW_KEY_VALUE] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie hinzufügen möchten.
  3. Verwenden Sie die Methode projects.setcommoninstancemetadata, um den projektweiten ssh-keys-Wert festzulegen. Geben Sie den fingerprint-Wert an, damit gleichzeitige Änderungen an diesem Metadatenwert nicht überschrieben werden.

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/setCommonInstanceMetadata
    
        {
         "items": [
          {
           "key": "ssh-keys",
           "value": "[USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
          }
         ]
         "fingerprint": "[FINGERPRINT]"
        }
        

    Dabei gilt:

    • [PROJECT_ID] ist die eindeutige Projekt-ID.
    • [USERNAME_1], [USERNAME_2] und [USERNAME_3] sind die Nutzernamen für Ihre Schlüssel.
    • [EXISTING_KEY_VALUE_1] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie entfernen möchten.
    • [EXISTING_KEY_VALUE_2] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie behalten möchten.
    • [NEW_KEY_VALUE] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie hinzufügen möchten.
    • [FINGERPRINT] ist der Fingerabdruck, den Sie zuvor mit der Methode projects.get abgerufen haben.

Testen Sie Ihre Änderungen, wenn Sie mit dem Bearbeiten der SSH-Schlüssel fertig sind. Versuchen Sie dazu, mit Drittanbietertools eine Verbindung zu Ihrer Linux-Instanz herzustellen.

Sollten Probleme auftreten, prüfen Sie die Metadaten der Instanz, zu der Sie eine Verbindung herstellen möchten. Wenn die Metadaten auf Instanzebene projektweite SSH-Schlüssel blockieren oder einen verworfenen, auf die Instanz begrenzten sshKeys-Wert haben, ignoriert die Instanz alle projektweiten SSH-Schlüssel. Wenn Sie projektweite Schlüssel auf eine Instanz anwenden möchten, muss die Instanz projektweite öffentliche SSH-Schlüssel zulassen. Außerdem sollten Sie, falls vorhanden, den verworfenen, auf die Instanz begrenzten sshKeys-Wert aus den Instanzmetadaten entfernen.

Projektweite öffentliche SSH-Schlüssel von einer Linux-Instanz zulassen oder sperren

Wenn Ihre Instanz projektweite öffentliche SSH-Schlüssel ignorieren und nur Schlüssel auf Instanzebene verwenden soll, können Sie projektweite öffentliche SSH-Schlüssel für die Instanz blockieren. Dadurch wird der Zugriff auf die Instanz auf Nutzer beschränkt, deren öffentliche SSH-Schlüssel in Metadaten auf Instanzebene gespeichert sind. Wenn Ihre Instanz sowohl projektweite öffentliche SSH-Schlüssel als auch öffentliche SSH-Schlüssel auf Instanzebene verwenden soll, können Sie in den Instanzmetadaten festlegen, dass projektweite SSH-Schlüssel zugelassen werden. Dadurch können alle Nutzer auf die Instanz zugreifen, deren öffentliche SSH-Schlüssel in projektweiten Metadaten oder in Metadaten auf Instanzebene gespeichert sind.

Console

Gehen Sie so vor, um projektweite öffentliche SSH-Schlüssel über die Cloud Console zuzulassen oder zu blockieren:

  1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf den Namen der Instanz, die Sie ändern möchten.

  3. Klicken Sie in der Symbolleiste auf Bearbeiten.

  4. Gehen Sie unter SSH-Schlüssel zum Kästchen Projektweite SSH-Schlüssel blockieren.

    • Wenn Sie verhindern möchten, dass Nutzer mit projektweiten SSH-Schlüsseln eine Verbindung zu dieser Instanz herstellen können, müssen Sie die Option Projektweite SSH-Schlüssel blockieren aktivieren.
    • Wenn Sie zulassen möchten, dass Nutzer mit projektweiten SSH-Schlüsseln eine Verbindung zu dieser Instanz herstellen können, müssen Sie die Option Projektweite SSH-Schlüssel blockieren deaktivieren.
  5. Wenn Sie mit dem Bearbeiten der Verbindungseinstellung für SSH-Schlüssel fertig sind, klicken Sie auf Speichern.

gcloud

Wenn Sie projektweite öffentliche SSH-Schlüssel für eine Linux-Instanz zulassen oder blockieren möchten, fügen Sie Ihrer Instanz den Metadatenwert block-project-ssh-keys hinzu:

  • Setzen Sie den Metadatenwert auf TRUE, um projektweite öffentliche SSH-Schlüssel zu sperren:

    gcloud compute instances add-metadata [INSTANCE_NAME] --metadata block-project-ssh-keys=TRUE
        

    Dabei ist [INSTANCE_NAME] der Name der Instanz, für die Sie projektweite öffentliche SSH-Schlüssel blockieren möchten.

  • Setzen Sie den Metadatenwert auf FALSE, um projektweite öffentliche SSH-Schlüssel zuzulassen:

    gcloud compute instances add-metadata [INSTANCE_NAME] --metadata block-project-ssh-keys=FALSE
        

    Dabei ist [INSTANCE_NAME] der Name der Instanz, für die Sie projektweite öffentliche SSH-Schlüssel zulassen möchten.

API

So können Sie projektweite öffentliche SSH-Schlüssel von einer Linux-Instanz sperren oder zulassen:

  • Zum Blockieren projektweiter öffentlicher SSH-Schlüssel fügen Sie der Instanz den Metadatenwert block-project-ssh-keys hinzu und setzen Sie diesen auf TRUE. Dadurch werden auf dieser Instanz alle projektweiten Schlüssel blockiert, sodass nur Schlüssel auf Instanzebene funktionieren.

     POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMetadata
    
         {
          "items": [
           {
            "key": "block-project-ssh-keys",
            "value": TRUE
           }
          ]
          "fingerprint": "[FINGERPRINT]"
         }
        

    Dabei gilt:

    • [PROJECT_ID] ist die eindeutige Projekt-ID.
    • [ZONE] ist die Zone, in der sich Ihre Instanz befindet.
    • [INSTANCE_NAME] ist die Instanz, auf der projektweite Schlüssel blockiert werden sollen.
    • [FINGERPRINT] ist die eindeutige ID für diese spezifische Metadatenkonfiguration, die das unbeabsichtigte Überschreiben gleichzeitiger Änderungen verhindert.
  • Zum Zulassen projektweiter öffentlicher SSH-Schlüssel fügen Sie der Instanz den Metadatenwert block-project-ssh-keys hinzu und setzen Sie diesen auf FALSE. Jetzt können auf dieser Instanz alle projektweiten Schlüssel (und Schlüssel auf Instanzebene) verwendet werden.

     POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMetadata
    
         {
         "items": [
          {
           "key": "block-project-ssh-keys",
           "value": FALSE
          }
         ]
         "fingerprint": "[FINGERPRINT]"
         }
        

    Dabei gilt:

    • [PROJECT_ID] ist die eindeutige Projekt-ID.
    • [ZONE] ist die Zone, in der sich Ihre Instanz befindet.
    • [INSTANCE_NAME] ist die Instanz, für die Sie projektweite Schlüssel aktivieren möchten.
    • [FINGERPRINT] ist die eindeutige ID für diese spezifische Metadatenkonfiguration, die das unbeabsichtigte Überschreiben gleichzeitiger Änderungen verhindert.

Testen Sie zum Abschluss Ihre Änderungen. Dazu versuchen Sie, mit Drittanbietertools eine Verbindung zu Ihrer Linux-Instanz herzustellen.

Öffentliche SSH-Schlüssel auf Instanzebene hinzufügen oder entfernen

Durch öffentliche SSH-Schlüssel auf Instanzebene erhalten Nutzer Zugriff auf eine bestimmte Linux-Instanz. Nutzer mit öffentlichen SSH-Schlüsseln auf Instanzebene können sogar dann auf eine Linux-Instanz zugreifen, wenn diese projektweite öffentliche SSH-Schlüssel sperrt.

Console

Gehen Sie so vor, um öffentliche SSH-Schlüssel auf Instanzebene in der Cloud Console hinzuzufügen oder zu entfernen:

  1. Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf den Namen der Instanz, die Sie ändern möchten.

  3. Klicken Sie in der Symbolleiste auf Bearbeiten.

  4. Klicken Sie unter SSH-Schlüssel auf Aufrufen und bearbeiten. Der Abschnitt wird erweitert, sodass alle öffentlichen SSH-Schlüssel auf Instanzebene angezeigt werden.

  5. Ändern Sie die öffentlichen SSH-Schlüssel auf Instanzebene:

    • Zum Einfügen eines öffentlichen SSH-Schlüssels klicken Sie auf Add Item (Element hinzufügen). Es wird ein Textfeld geöffnet.
    • Kopieren Sie den Inhalt Ihrer öffentlichen SSH-Schlüsseldatei und fügen Sie diesen in das Textfeld ein.

      Wiederholen Sie diesen Vorgang für jeden öffentlichen SSH-Schlüssel, den Sie einfügen möchten.

    • Zum Entfernen eines öffentlichen SSH-Schlüssels klicken Sie auf die Entfernen-Schaltfläche neben dem Schlüssel:

      Öffentlicher PuTTYgen-Schlüssel

      Wiederholen Sie diesen Vorgang für jeden öffentlichen SSH-Schlüssel, den Sie entfernen möchten.

  6. Wenn Sie mit der Bearbeitung der SSH-Schlüssel fertig sind, klicken Sie auf Speichern.

gcloud

So fügen Sie öffentliche SSH-Schlüssel auf Instanzebene mit dem gcloud-Tool hinzu oder entfernen diese:

  1. Wenn in Ihrer Instanz bereits öffentliche SSH-Schlüssel auf Instanzebene vorhanden sind, rufen Sie diese aus den Metadaten ab:

    1. Rufen Sie die vorhandenen Metadaten der Instanz ab:

           gcloud compute instances describe [INSTANCE_NAME]
           

      Dabei ist [INSTANCE_NAME] der Name der Instanz, für die Sie öffentliche SSH-Schlüssel hinzufügen oder entfernen müssen.

    2. Suchen Sie in der Ausgabe nach dem Metadatenwert ssh-keys:

       ...
           metadata:
             fingerprint: QCofVTHlggs=
             items:
             ...
             - key: ssh-keys
               value: |-
                 [USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]
                 [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
           ...
          

      Dabei gilt:

      • [USERNAME_1] und [USERNAME_2] sind die Nutzernamen für Ihre vorhandenen Schlüssel.
      • [EXISTING_KEY_VALUE_1] und [EXISTING_KEY_VALUE_2] sind die Werte öffentlicher Schlüssel, die bereits auf die Instanz angewendet wurden.

    3. Kopieren Sie die öffentlichen SSH-Schlüssel, die unter dem Metadatenwert ssh-keys aufgeführt sind.

  2. Erstellen und öffnen Sie eine neue Textdatei auf Ihrer lokalen Workstation.

  3. Erstellen Sie in der Datei eine Liste aller öffentlichen SSH-Schlüssel, die Sie in Metadaten auf Instanzebene hinzufügen oder beibehalten möchten. Wenn öffentliche SSH-Schlüssel in Metadaten auf Instanzebene vorliegen, werden alle Schlüssel entfernt, die Sie nicht in die Liste aufnehmen.

    Mit der folgenden Beispielliste wird dafür gesorgt, dass der Schlüssel für [USERNAME_1] entfernt wird, da der SSH-Schlüssel dieses Nutzers ausgelassen wurde. Der SSH-Schlüssel für [USERNAME_2] wird dagegen beibehalten und der SSH-Schlüssel für [USERNAME_3] wird hinzugefügt, weil beide Schlüssel in der Liste enthalten sind.

    [USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
        [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]
        

    Dabei gilt:

    • [USERNAME_1], [USERNAME_2] und [USERNAME_3] sind die Nutzernamen der öffentlichen SSH-Schlüssel.
    • [EXISTING_KEY_VALUE_1] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie entfernen möchten.
    • [EXISTING_KEY_VALUE_2] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie behalten möchten.
    • [NEW_KEY_VALUE] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie hinzufügen möchten.
  4. Speichern und schließen Sie die Datei.

  5. Geben Sie in der Eingabeaufforderung den Befehl compute instances add-metadata ein, um den ssh-key-Wert nur auf Instanzebene einzustellen. Verwenden Sie das Flag --metadata-from-file und geben Sie den Pfad zur Liste der öffentlichen Schlüsseldateien an, die Sie erstellt haben.

    gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=[LIST_PATH]
        

    Dabei gilt:

    • [INSTANCE_NAME] ist der Name der Instanz, auf die Sie die öffentliche SSH-Schlüsseldatei anwenden möchten.
    • [LIST_PATH] ist der Pfad zu Ihrer Liste öffentlicher SSH-Schlüssel.

API

Fügen Sie den Metadaten mit der Methode instances.setMetadata einen auf die Instanz begrenzten ssh-keys-Wert hinzu.

  1. Mit der Methode instances.get rufen Sie den fingerprint-Metadatenwert ab, der für die Anfrage verwendet werden soll. Wenn Sie die vorhandenen Schlüssel auf Instanzebene beibehalten möchten, müssen Sie die vorhandenen ssh-keys-Werte abrufen.

    GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]
        

    Der Server gibt eine ähnliche Antwort wie diese zurück:

    ...
        "fingerprint": "[FINGERPRINT]",
        "items": [
         {
          "key": "ssh-keys",
          "value": "[USERNAME_1]:ssh-rsa [EXISTING_KEY_VALUE_1] [USERNAME_1]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
         }
        ]
        ...
        

    Dabei gilt:

    • [PROJECT_ID] ist die eindeutige Projekt-ID.
    • [ZONE] ist die Zone, in der sich Ihre Instanz befindet.
    • [INSTANCE_NAME] ist die Instanz, für die Sie öffentliche SSH-Schlüssel auf Instanzebene bearbeiten möchten.
    • [FINGERPRINT] ist die eindeutige ID für diese spezifische Metadatenkonfiguration, die das unbeabsichtigte Überschreiben gleichzeitiger Änderungen verhindert.
    • [USERNAME_1] und [USERNAME_2] sind die Nutzernamen für Ihre vorhandenen Schlüssel.
    • [EXISTING_KEY_VALUE_1] und [EXISTING_KEY_VALUE_2] sind die Werte öffentlicher Schlüssel, die bereits auf die Instanz angewendet wurden.
  2. Sie erstellen eine Liste aller öffentlichen SSH-Schlüssel, die Sie in Metadaten auf Instanzebene hinzufügen oder beibehalten möchten. Wenn öffentliche SSH-Schlüssel in Metadaten auf Instanzebene vorliegen, werden alle Schlüssel entfernt, die Sie nicht in die Liste aufnehmen.

    In diesem Beispiel enthält die Datei einen neuen [KEY_VALUE], gefolgt von einem der vorhandenen Schlüsselwerte, die Sie im vorherigen Schritt abgerufen haben. Der [EXISTING_KEY_VALUE_1] wird ausgelassen und deshalb im nächsten Schritt aus der Instanz entfernt. Verwenden Sie Zeilenvorschubzeichen (\n), um die Schlüsselwerte voneinander zu trennen.

    [USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]
        

    Dabei gilt:

    • [USERNAME_1], [USERNAME_2] und [USERNAME_3] sind die Nutzernamen für Ihre Schlüssel.
    • [EXISTING_KEY_VALUE_1] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie entfernen möchten.
    • [EXISTING_KEY_VALUE_2] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie behalten möchten.
    • [NEW_KEY_VALUE] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie hinzufügen möchten.
  3. Mit der Methode instances.setMetadata legen Sie den auf die Instanz begrenzten ssh-keys-Wert fest. Geben Sie den fingerprint-Wert an, damit gleichzeitige Änderungen an diesem Metadatenwert nicht überschrieben werden.

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMetadata
    
        {
         "items": [
          {
           "key": "ssh-keys",
           "value": "[USERNAME_3]:ssh-rsa [NEW_KEY_VALUE] [USERNAME_3]\n[USERNAME_2]:ssh-rsa [EXISTING_KEY_VALUE_2] [USERNAME_2]"
          }
         ]
         "fingerprint": "[FINGERPRINT]"
        }
        

    Dabei gilt:

    • [PROJECT_ID] ist die eindeutige Projekt-ID.
    • [ZONE] ist die Zone, in der sich Ihre Instanz befindet.
    • [INSTANCE_NAME] ist die Instanz, auf der Sie öffentliche SSH-Schlüssel auf Instanzebene bearbeiten möchten.
    • [USERNAME_1], [USERNAME_2] und [USERNAME_3] sind die Nutzernamen für Ihre Schlüssel.
    • [EXISTING_KEY_VALUE_1] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie entfernen möchten.
    • [EXISTING_KEY_VALUE_2] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie behalten möchten.
    • [NEW_KEY_VALUE] ist ein öffentlicher Schlüsselwert für einen SSH-Schlüssel, den Sie hinzufügen möchten.
    • [FINGERPRINT] ist die eindeutige ID für diese spezifische Metadatenkonfiguration, die das unbeabsichtigte Überschreiben gleichzeitiger Änderungen verhindert.

Testen Sie Ihre Änderungen, wenn Sie mit dem Bearbeiten der SSH-Schlüssel fertig sind. Versuchen Sie dazu, mit Drittanbietertools eine Verbindung zu Ihrer Linux-Instanz herzustellen.

Weitere Informationen