In diesem Dokument wird beschrieben, wie Sie den Zugriff von Nutzern auf VM-Instanzen verhindern, indem Sie SSH-Schlüssel von VMs entfernen und blockieren.
Hinweise
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Wenn Sie nicht wissen, welchen Schlüssel Sie entfernen möchten, führen Sie den Befehl
gcloud compute os-login describe-profile
aus, um alle mit Ihrem Konto verknüpften Schlüssel einzusehen:gcloud compute os-login describe-profile
Kopieren Sie den Wert
fingerprint
des Schlüssels, den Sie löschen möchten.Entfernen Sie den Schlüssel mit dem Befehl
gcloud compute os-login ssh-keys remove
aus Ihrem Konto:gcloud compute os-login ssh-keys remove --key=KEY
Ersetzen Sie
KEY
durch den öffentlichen SSH-Schlüssel, den Sie entfernen möchten, oder durch den OS Login-Fingerabdruck für den Schlüssel, den Sie entfernen möchten.Wenn Sie nicht wissen, welchen Schlüssel Sie entfernen möchten, verwenden Sie die Methode
users.getLoginProfile
, um alle mit Ihrem Konto verknüpften Schlüssel einzusehen:GET https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/loginProfile
Ersetzen Sie dabei
ACCOUNT_EMAIL
durch die mit Ihrem Konto verknüpfte E-Mail-Adresse.Kopieren Sie den Wert
fingerprint
des Schlüssels, den Sie löschen möchten.Entfernen Sie den Schlüssel mit der Methode
users.sshPublicKeys.delete
aus Ihrem Konto:DELETE https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL/sshPublicKeys/FINGERPRINT
Dabei gilt:
ACCOUNT_EMAIL
: Die mit Ihrem Konto verknüpfte E-Mail-Adresse.FINGERPRINT
: SHA-256-Fingerabdruck des zu entfernenden Schlüssels
Rufen Sie in der Google Cloud Console die Seite Metadaten auf.
Standardmäßig wird die Seite Metadaten auf dem Tab Zonale Metadaten geöffnet.
Klicken Sie auf den Tab Projektmetadaten und dann auf den Tab SSH-Schlüssel.
Der Tab SSH-Schlüssel wird für Projektmetadaten geöffnet.
Klicken Sie oben auf der Seite auf
Bearbeiten.Gehen Sie auf dem Tab Metadaten der Projektmetadaten zum SSH-Schlüssel, den Sie entfernen möchten, und klicken Sie auf die Schaltfläche
Löschen neben dem SSH-Schlüssel.Wiederholen Sie diesen Schritt für jeden SSH-Schlüssel, den Sie entfernen möchten.
Klicken Sie auf Speichern.
Führen Sie den Befehl
gcloud compute project-info describe
aus, um die Metadaten für das Projekt abzurufen:gcloud compute project-info describe
Die entsprechende Ausgabe sieht etwa so aus:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Kopieren Sie den Metadatenwert
ssh-keys
.Erstellen und öffnen Sie eine neue Textdatei auf Ihrer Workstation.
Fügen Sie in der Datei die Liste der gerade kopierten SSH-Schlüssel ein und löschen Sie dann alle Schlüssel, die Sie aus den Projektmetadaten entfernen möchten.
Speichern und schließen Sie die Datei.
Führen Sie den Befehl
gcloud compute project-info add-metadata
aus, um den projektweitenssh-keys
-Wert festzulegen:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
Ersetzen Sie
KEY_FILE
durch einen der folgenden Werte:- Den Pfad zur Datei, die Sie im vorherigen Schritt erstellt haben, wenn das Projekt vorhandene SSH-Schlüssel enthielt.
- Den Pfad zur neuen öffentlichen SSH-Schlüsseldatei, wenn das Projekt keine vorhandenen SSH-Schlüssel enthielt
Verwenden Sie die Methode
projects.get
, um die Wertefingerprint
undssh-keys
aus Metadaten zu erhalten.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID.Die Antwort ähnelt dem folgenden Beispiel.
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Kopieren Sie die Liste der SSH-Schlüsselwerte und löschen Sie die Schlüssel, die Sie entfernen möchten.
Verwenden Sie
projects.setCommonInstanceMetadata
, um die SSH-Schlüssel zu entfernen.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS" } ] "fingerprint": "FINGERPRINT" }
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID.EXISTING_SSH_KEYS
: Liste der SSH-Schlüssel, die Sie behalten möchten.FINGERPRINT
: Wert vonfingerprint
aus der Antwort derprojects.get
-Anfrage.
Rufen Sie in der Google Cloud Console die Seite Metadaten auf.
Zu „Metadaten“ Es wird standardmäßig die Seite Metadaten auf dem Tab Zonale Metadaten geöffnet.
Klicken Sie auf den Tab SSH-Schlüssel.
Der Tab SSH-Schlüssel wird für Zonale Metadaten geöffnet.
Wählen Sie auf dem Tab SSH-Schlüssel die Region mit den Zonen aus, für die Sie die SSH-Schlüssel hinzufügen möchten. Wenn Sie beispielsweise zonale SSH-Schlüssel in der Zone us-central2-a hinzufügen möchten, wählen Sie us-central2 (Oklahoma) aus. Die Standardauswahl ist us-central1 (Iowa).
Klicken Sie die Kästchen für alle SSH-Schlüssel an, die Sie entfernen möchten.
Klicken Sie oben auf der Seite auf
Löschen.Klicken Sie im angezeigten Dialogfeld auf Bestätigen, um das Entfernen der SSH-Schlüssel aus den zonalen Metadaten abzuschließen.
Rufen Sie in der Google Cloud Console die Seite Metadaten auf.
Klicken Sie auf den Namen der VM, für die Sie einen Schlüssel entfernen möchten.
Klicken Sie auf Bearbeiten.
Klicken Sie im mittleren Bereich unter SSH-Schlüssel auf Aufrufen und bearbeiten. Der Bereich wird erweitert, sodass alle öffentlichen SSH-Schlüssel auf Instanzebene angezeigt werden.
Klicken Sie neben dem Schlüssel, den Sie entfernen möchten, auf die Schaltfläche zum Entfernen:
Klicken Sie auf Speichern.
Führen Sie den Befehl
gcloud compute instances describe
aus, um die Metadaten für die VM abzurufen:gcloud compute instances describe VM_NAME
Ersetzen Sie VM_NAME durch den Namen der VM, für die Sie öffentliche SSH-Schlüssel hinzufügen oder entfernen möchten.
Die entsprechende Ausgabe sieht etwa so aus:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...Kopieren Sie den Metadatenwert
ssh-keys
.Erstellen und öffnen Sie eine neue Textdatei auf Ihrer lokalen Workstation.
Fügen Sie in der Datei die Liste der gerade kopierten SSH-Schlüssel ein und entfernen Sie dann alle Schlüssel, die Sie löschen möchten.
Speichern und schließen Sie die Datei.
Führen Sie den Befehl
gcloud compute project-info add-metadata
aus, um den projektweitenssh-keys
-Wert festzulegen:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
Dabei gilt:
VM_NAME
: VM, für die Sie den SSH-Schlüssel entfernen möchten.KEY_FILE
: Pfad zur Datei, die die Liste aller SSH-Schlüssel des Projekts enthält.
Verwenden Sie die Methode
instances.get
, um die Wertefingerprint
undssh-keys
aus Metadaten zu erhalten.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID.ZONE
: Zone der VM, der Sie einen SSH-Schlüssel hinzufügen.VM_NAME
: VM, für die Sie einen SSH-Schlüssel hinzufügen.
Die Antwort ähnelt dem folgenden Beispiel.
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
Kopieren Sie die Liste der SSH-Schlüsselwerte und löschen Sie die Schlüssel, die Sie entfernen möchten.
Verwenden Sie
instances.setMetadata
, um die SSH-Schlüssel zu entfernen.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS } ] "fingerprint": "FINGERPRINT" }
Dabei gilt:
PROJECT_ID
: Ihre Projekt-IDEXISTING_SSH_KEYS
: Wert des Schlüsselsssh-keys
aus der Antwort derprojects.get
-Anfrage.FINGERPRINT
: Wert vonfingerprint
aus der Antwort derinstances.get
-Anfrage.
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
Geben Sie die VM-Details an
Maximieren Sie den Abschnitt Erweiterte Optionen und tun Sie Folgendes:
Maximieren Sie den Abschnitt Sicherheit.
Klicken Sie auf das Kästchen Projektweite SSH-Schlüssel blockieren.
Klicken Sie zum Erstellen und Starten der VM auf Erstellen.
PROJECT_ID
: die Projekt-IDZONE
: die Zone der VMRufen Sie in der Google Cloud Console die Seite Metadaten auf.
Klicken Sie auf den Namen der VM, für die Sie Projekt-SSH-Schlüssel blockieren möchten.
Klicken Sie auf Bearbeiten.
Klicken Sie unter SSH-Schlüssel das Kästchen Projektweite SSH-Schlüssel blockieren an.
Wenn Sie mit dem Bearbeiten der Verbindungseinstellung für SSH-Schlüssel fertig sind, klicken Sie auf Speichern.
Mit der Methode
instances.get
können Siefingerprint
aus Metadaten abrufen.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID.ZONE
: Zone der VM, der Sie einen SSH-Schlüssel hinzufügen.VM_NAME
: VM, für die Sie einen SSH-Schlüssel hinzufügen.
Die Antwort ähnelt dem folgenden Beispiel.
... "fingerprint": "utgYE_XWtE8=" ...
Verwenden Sie die Methode
instances.setMetadata
, umblock-project-ssh-keys
aufTRUE
festzulegen:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] "fingerprint": "FINGERPRINT" }
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID.ZONE
: Zone, in der sich Ihre Instanz befindet.INSTANCE_NAME
: Instanz, in der projektweite Schlüssel blockiert werden sollen.FINGERPRINT
: Wert vonfingerprint
aus der Antwort derinstances.get
-Anfrage.
- Vorteile von OS Login für die Zugriffsverwaltung.
- Verbindung zu VMs mithilfe von Google-Tools herstellen, sodass Sie keine eigenen SSH-Schlüssel verwalten müssen
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
SSH-Schlüssel entfernen
Sie können SSH-Schlüssel aus VMs entfernen, die OS Login verwenden und aus VMs, die metadatenbasierte SSH-Schlüssel verwenden.SSH-Schlüssel von VMs mit OS Login entfernen
VMs, die OS Login verwenden, akzeptieren SSH-Schlüssel, die Ihrem Google-Konto zugeordnet sind. Sie können einen öffentlichen SSH-Schlüssel mithilfe der Google Cloud CLI oder der OS Login API aus Ihrem Nutzerkonto entfernen. Als Administrator für Ihre Organisation können Sie SSH-Schlüssel mithilfe der Directory API aus Nutzerkonten entfernen. Compute Engine entfernt abgelaufene Schlüssel automatisch aus Ihrem Google-Konto.
gcloud
So entfernen Sie einen öffentlichen SSH-Schlüssel aus Ihrem Konto:
REST
So entfernen Sie einen öffentlichen SSH-Schlüssel aus Ihrem Konto:
SSH-Schlüssel von VMs mit metadatenbasierten Schlüsseln entfernen
Sie können einen öffentlichen SSH-Schlüssel aus den Metadaten eines Projekts oder einer Instanz entfernen. Dazu verwenden Sie die Google Cloud Console, die gcloud CLI oder die Compute Engine API.
Nachdem Sie den letzten Schlüssel aus den Metadaten für einen bestimmten Nutzer entfernt haben oder der letzte Schlüssel in den Metadaten für einen bestimmten Nutzer abläuft, löscht Compute Engine die Datei
Achtung: Wenn Sie SSH-Schlüssel in Metadaten verwalten, können Ihre Projektmitglieder möglicherweise keine Verbindung zu VMs mehr herstellen. Außerdem riskieren Sie, dass Nutzer, einschließlich Nutzer außerhalb Ihres Projekts, unbeabsichtigten Zugriff auf VMs erhalten. Weitere Informationen finden Sie unter Risiken der manuellen Schlüsselverwaltung.~/.ssh/authorized_keys
des Nutzers auf der VM.Öffentlichen Schlüssel aus Projektmetadaten entfernen
Entfernen Sie einen öffentlichen SSH-Schlüssel aus den Projektmetadaten, um den Zugriff auf alle VMs in einem Projekt zu entfernen.
Wenn Sie einen Schlüssel aus Metadaten mit der gcloud CLI und der Compute Engine API entfernen, müssen Sie die Liste der vorhandenen Schlüssel abrufen, die Liste der Schlüssel bearbeiten, um die unerwünschten Schlüssel zu entfernen, und die alten Schlüssel mit der Liste der Schlüssel überschreiben, die Sie behalten möchten. Dies wird im folgenden Abschnitt erläutert.
Console
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den Projektmetadaten über die Google Cloud Console:
gcloud
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den Projektmetadaten mit der gcloud CLI:
REST
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den Projektmetadaten mithilfe der Compute Engine API:
Öffentlichen SSH-Schlüssel aus zonalen Metadaten entfernen
Entfernen Sie einen öffentlichen SSH-Schlüssel aus zonalen Metadaten, um den Zugriff auf VMs in einer bestimmten Zone in einem Projekt zu entfernen.
Ein SSH-Schlüssel auf zonaler Ebene hat Vorrang vor einem SSH-Schlüssel auf Projektebene. Wenn Sie auf Projekt- und zonaler Ebene einen SSH-Schlüssel mit demselben Namen haben, verwendet Compute Engine immer den zonalen SSH-Schlüssel vor dem Projekt-SSH-Schlüssel. Wenn Compute Engine den SSH-Schlüssel auf Projektebene verwenden soll, müssen Sie zuerst den zonalen SSH-Schlüssel entfernen.
Console
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den zonalen Metadaten mithilfe der Google Cloud Console:
gcloud
Mit dem Befehl
gcloud compute project-zonal-metadata remove
können Sie öffentliche SSH-Schlüssel aus zonalen Metadaten entfernen.Eine ausführliche Anleitung finden Sie auf dem Tab gcloud unter Benutzerdefinierte zonale Metadaten entfernen.
REST
Wenn Sie öffentliche SSH-Schlüssel aus zonalen Metadaten entfernen möchten, senden Sie eine
PATCH
-Anfrage an die MethodeinstanceSettings().patch
, wobei Sie die SSH-Schlüssel, die Sie aus den zonalen Metadaten entfernen möchten, aus dem Anfragetext ausschließen.Eine ausführliche Anleitung finden Sie auf dem Tab REST unter Benutzerdefinierte zonale Metadaten entfernen.
Öffentlichen SSH-Schlüssel aus Instanzmetadaten entfernen
Sie können einen öffentlichen SSH-Schlüssel aus den Instanzmetadaten entfernen, um den Zugriff auf eine einzelne VM zu entfernen.
Wenn Sie einen Schlüssel aus Metadaten mit der gcloud CLI und der Compute Engine API entfernen, müssen Sie die Liste der vorhandenen Schlüssel abrufen, die Liste der Schlüssel bearbeiten, um die unerwünschten Schlüssel zu entfernen, und die alten Schlüssel mit der Liste der Schlüssel überschreiben, die Sie behalten möchten. Dies wird im folgenden Abschnitt erläutert.
Console
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den Instanzmetadaten mithilfe der Google Cloud Console:
gcloud
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den Instanzmetadaten mit der gcloud CLI:
REST
So entfernen Sie einen öffentlichen SSH-Schlüssel aus den Instanzmetadaten mithilfe der Compute Engine API:
Projekt-SSH-Schlüssel für VMs mit metadatenbasierten SSH-Schlüsseln blockieren
Wenn Sie verhindern möchten, dass VMs SSH-Schlüssel akzeptieren, die in Projektmetadaten gespeichert sind, können Sie die Projekt-SSH-Schlüssel für VMs blockieren. Sie können Projekt-SSH-Schlüssel für VMs blockieren, wenn Sie eine VM erstellen oder nachdem Sie eine VM erstellt haben.
Projekt-SSH-Schlüssel für eine VM während der VM-Erstellung blockieren
Sie können Projekt-SSH-Schlüssel für VMs während der VM-Erstellung mithilfe der Google Cloud Console, der gcloud CLI oder der Compute Engine API blockieren.
Console
Wenn Sie eine VM erstellen und mit der Google Cloud Console verhindern möchten, dass sie in Projektmetadaten gespeicherte SSH-Schlüssel akzeptiert, gehen Sie so vor:
gcloud
Verwenden Sie den Befehl
gcloud compute instances create
, wenn Sie eine VM erstellen und mit der gcloud CLI verhindern möchten, dass sie in Projektmetadaten gespeicherte SSH-Schlüssel akzeptiert:gcloud compute instances create VM_NAME \ --metadata block-project-ssh-keys=TRUE
Ersetzen Sie
VM_NAME
durch den Namen der neuen VM.REST
Wenn Sie eine VM erstellen und mit Compute Engine verhindern möchten, dass sie in Projektmetadaten gespeicherte SSH-Schlüssel akzeptiert, stellen Sie eine
POST
-Anfrage an die Methodeinstances.insert
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Dabei gilt:
Geben Sie im Anfragetext die Nutzernamen und öffentlichen SSH-Schlüssel im Attribut
items
an:... { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] } ...
Projekt-SSH-Schlüssel für eine VM nach der VM-Erstellung blockieren
Sie können Projekt-SSH-Schlüssel für VMs nach der VM-Erstellung mithilfe der Google Cloud Console, der gcloud CLI oder der Compute Engine API blockieren.
Console
So verhindern Sie, dass VMs Verbindungen von SSH-Schlüsseln akzeptieren, die in Projektmetadaten über die Google Cloud Console gespeichert sind:
gcloud
So verhindern Sie, dass VMs Verbindungen von SSH-Schlüsseln akzeptieren, die in Projektmetadaten mit der gcloud CLI gespeichert sind:
Führen Sie den Befehl
gcloud compute instances add-metadata
aus:gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE
Ersetzen Sie
VM_NAME
durch den Namen der VM, für die Sie projektweite öffentliche SSH-Schlüssel blockieren möchten.REST
So verhindern Sie über die Compute Engine API, dass VMs Verbindungen von SSH-Schlüsseln akzeptieren, die in Projektmetadaten gespeichert sind:
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-10-14 (UTC).
-