Hinweis
- Informationen zum Verwalten des Zugriffs auf Ihre Compute Engine-VMs finden Sie unter Zugriffsmethode auswählen.
- Erstellen Sie ein SSH-Schlüsselpaar, falls Sie das noch nicht getan haben.
-
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 so bei Compute Engine authentifizieren:
Wählen Sie den Tab aus, der Ihrer geplanten Verwendung der Beispiele auf dieser Seite entspricht:
Console
Wenn Sie über die Google Cloud Console auf Google Cloud Dienste und APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
- Legen Sie eine Standardregion und -zone fest.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Terraform
Wenn Sie die Terraform-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI.
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
Schlüssel zu VMs hinzufügen, die OS Login verwenden
VMs, die OS Login verwenden, akzeptieren SSH-Schlüssel, die Ihrem Google-Konto zugeordnet sind. Sie können einen öffentlichen SSH-Schlüssel mit Ihrem Google-Konto über die gcloud CLI oder die OS Login API verknüpfen. Als Administrator für Ihre Organisation können Sie den Nutzerkonten mithilfe der Directory API SSH-Schlüssel hinzufügen.
Wenn Sie Ihrem Google-Konto SSH-Schlüssel hinzufügen, generiert Compute Engine einen Nutzernamen für Sie, indem der Nutzername und die Domain aus der E-Mail-Adresse kombiniert werden, die mit Ihrem Google-Konto verknüpft ist. Wenn Ihre E-Mail-Adresse beispielsweise cloudysanfrancisco@gmail.com lautet, lautet Ihr Nutzername cloudysanfrancisco_gmail_com.
Wenn Sie einen SSH-Schlüssel in einem Projekt hinzufügen, das sich außerhalb Ihrer Organisation befindet, wird Ihrem Nutzernamen das Präfix ext_ vorangestellt, z. B. ext_cloudysanfrancisco_gmail_com. Der Administrator Ihrer Organisation kann Ihren Nutzernamen mit der Directory API anpassen. Wenn Sie bereits einen Nutzernamen konfiguriert haben, verwendet Compute Engine diesen Nutzernamen, wenn Sie SSH-Schlüssel hinzufügen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Verwenden Sie den Befehl
gcloud compute os-login ssh-keys add, um Ihrem Konto einen öffentlichen SSH-Schlüssel hinzuzufügen:gcloud compute os-login ssh-keys add \ --key-file=KEY_FILE_PATH \ --project=PROJECT \ --ttl=EXPIRE_TIME
Dabei gilt:
KEY_FILE_PATH: Der Pfad zum öffentlichen SSH-Schlüssel auf Ihrer Workstation. Der Schlüssel muss das Formatpublic-opensshhaben.PROJECT(Optional): Ein Projekt, in dem Sie Ihren SSH-Schlüssel verwenden möchten. Geben Sie dieses Feld an, um Ihren SSH-Schlüssel in einem Projekt außerhalb Ihrer Organisation zu verwenden oder wenn Sie kein Mitglied einer Cloud Identity-Organisation sind.EXPIRE_TIME: Optional: Ablaufzeit für den SSH-SchlüsselBeispiel: Wenn Sie
30mangeben, läuft der SSH-Schlüssel nach 30 Minuten ab.Dieses Flag verwendet die folgenden Einheiten:
sfür Sekundenmfür Minutenhfür Stundendfür Tage
Terraform
Verwenden Sie zum Hinzufügen eines öffentlichen SSH-Schlüssels zu Ihrem Konto die Ressource google_client_openid_userinfo zusammen mit der Ressource google_os_login_ssh_public_key.
REST
Verwenden Sie die Methode users.importSshPublicKey der OS Login API, um Ihrem Konto einen öffentlichen SSH-Schlüssel hinzuzufügen:
POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey
{
"key": "SSH_KEY",
"expirationTimeUsec": "EXPIRATION_TIMESTAMP"
}
Dabei gilt:
ACCOUNT_EMAIL: die mit Ihrem Konto verknüpfte E-Mail-Adresse.SSH_KEY: der öffentliche Schlüssel, den Sie dem Konto hinzufügen möchten.EXPIRATION_TIMESTAMP: die Ablaufzeit für den Schlüssel in Mikrosekunden seit der Epoche (1 Sekunde = 106 Mikrosekunden)
SSH-Schlüssel zu VMs hinzufügen, die metadatenbasierte SSH-Schlüssel verwenden
VMs, die kein OS Login verwenden, speichern SSH-Schlüssel in Compute Engine-Projekt- und Instanzmetadaten. Wenn OS Login für eine VM aktiviert ist, ignoriert der Gast-Agent der VM die in Metadaten gespeicherten Schlüssel.
Sie können in Projektmetadaten gespeicherte SSH-Schlüssel verwenden, um auf alle VMs in einem Projekt zuzugreifen. Sie können in den Instanzmetadaten gespeicherte SSH-Schlüssel verwenden, um auf einzelne VMs zuzugreifen.
Compute Engine entfernt abgelaufene SSH-Schlüssel zwar nicht automatisch aus den Metadaten, allerdings können abgelaufene Schlüssel nicht zum Herstellen neuer Verbindungen zu VMs verwendet werden. Informationen zum Entfernen von abgelaufenen Schlüsseln aus Metadaten finden Sie unter SSH-Schlüssel von VMs mit metadatenbasierten Schlüsseln entfernen.
Sie können einen öffentlichen SSH-Schlüssel zu Projekt- oder VM-Instanzmetadaten mithilfe der Google Cloud Console, der gcloud CLI oder REST hinzufügen. Sie können keine zonalen Metadatenwerte für SSH-Schlüssel festlegen.
SSH-Schlüssel zu Projektmetadaten hinzufügen
Sie können Projektmetadaten einen öffentlichen SSH-Schlüssel hinzufügen, um auf alle VMs in einem Projekt zuzugreifen. Ausgenommen sind VMs, die projektweite SSH-Schlüssel blockieren. Weitere Informationen zum Blockieren projektweiter SSH-Schlüssel finden Sie unter SSH-Schlüssel von VMs blockieren, die metadatenbasierte SSH-Schlüssel verwenden.
Console
So fügen Sie den Projektmetadaten mit derGoogle Cloud -Konsole einen öffentlichen SSH-Schlüssel hinzu:
Rufen Sie in der Google Cloud Console die Seite Metadaten auf.
Klicken Sie auf den Tab SSH-Schlüssel.
Klicken Sie auf Bearbeiten.
Klicken Sie auf Zeile hinzufügen.
Fügen Sie in das Feld SSH-Schlüssel, das sich öffnet, Ihren öffentlichen SSH-Schlüssel ein. Die Komprimierung muss in einem der folgenden Formate erfolgen:
- Format für einen Schlüssel ohne Ablaufzeit:
KEY_VALUE USERNAME
- Format für einen Schlüssel mit einer Ablaufzeit:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung zu Linux-VMs als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
Klicken Sie auf Speichern.
gcloud
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Wenn bereits SSH-Schlüssel in Projektmetadaten vorhanden sind, müssen Sie diese jedes Mal den Projektmetadaten neu hinzufügen, wenn Sie mit der gcloud CLI einen neuen SSH-Schlüssel hinzufügen. Wenn Sie Ihre vorhandenen Schlüssel nicht noch einmal hinzufügen, werden die vorhandenen Schlüssel durch das Hinzufügen eines neuen Schlüssels gelöscht.
So fügen Sie den Projektmetadaten mit der gcloud CLI einen öffentlichen SSH-Schlüssel hinzu:
Wenn in Ihrem Projekt bereits projektweite öffentliche SSH-Schlüssel vorhanden sind, können Sie diese aus Metadaten abrufen und einer neuen Datei hinzufügen:
Führen Sie den Befehl
gcloud compute project-info describeaus, um die SSH-Schlüssel für das Projekt abzurufen:gcloud compute project-info describe \ --format="value(commonInstanceMetadata[items][ssh-keys])"
Die Ausgabe sieht in etwa so aus:
username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
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 Schlüssel ein, die Sie gerade kopiert haben.
Fügen Sie Ihren neuen Schlüssel am Ende der Liste in einem der folgenden Formate hinzu:
- Format für einen Schlüssel ohne Ablaufzeit:
USERNAME:KEY_VALUE
- Format für einen Schlüssel mit einer Ablaufzeit:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
Speichern und schließen Sie die Datei.
Führen Sie den Befehl
gcloud compute project-info add-metadataaus, um den projektweitenssh-keys-Wert festzulegen:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
Ersetzen Sie
KEY_FILEdurch einen der folgenden Werte:- Der Pfad zu der Datei, die Sie im vorherigen Schritt erstellt haben, wenn das Projekt vorhandene SSH-Schlüssel enthalten hat
- Der Pfad zu Ihrer neuen öffentlichen SSH-Schlüsseldatei, wenn das Projekt keine SSH-Schlüssel enthalten hat
Terraform
Verwenden Sie die Ressource google_compute_project_metadata, um Ihren Projektmetadaten einen öffentlichen SSH-Schlüssel hinzuzufügen.
REST
Wenn bereits SSH-Schlüssel in Projektmetadaten vorhanden sind, müssen Sie diese jedes Mal den Projektmetadaten hinzufügen, wenn Sie mit der Compute Engine API einen neuen SSH-Schlüssel hinzufügen. Wenn Sie Ihre vorhandenen Schlüssel nicht noch einmal hinzufügen, werden die vorhandenen Schlüssel durch das Hinzufügen eines neuen Schlüssels gelöscht.
So fügen Sie den Projektmetadaten mithilfe der Compute Engine API einen öffentlichen SSH-Schlüssel hinzu:
Rufen Sie die Werte
fingerprintundssh-keysaus den Metadaten mit der Methodeprojects.getab.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch 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"}" } ] ...Fügen Sie den neuen Wert
ssh-keysmit der Methodeprojects.setCommonInstanceMetadatahinzu.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }Dabei gilt:
PROJECT_ID: Ihre Projekt-IDEXISTING_SSH_KEYS: Wert des Schlüsselsssh-keysaus der Antwort derprojects.get-Anfrage.FINGERPRINT: der Wert vonfingerprintaus der Antwort derprojects.get-AnfrageNEW_SSH_KEY: der neue SSH-Schlüssel in einem der folgenden Formate:- Format für einen Schlüssel ohne Ablaufzeit:
USERNAME:KEY_VALUE
- Format für einen Schlüssel mit einer Ablaufzeit:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
SSH-Schlüssel zu Instanzmetadaten hinzufügen
Sie können den Instanzmetadaten einen öffentlichen SSH-Schlüssel hinzufügen, wenn Sie eine VM erstellen oder nachdem Sie eine VM erstellt haben.
SSH-Schlüssel während der VM-Erstellung zu Instanzmetadaten hinzufügen
Sie können während der VM-Erstellung SSH-Schlüssel zu Instanzmetadaten hinzufügen. Verwenden Sie dazu dieGoogle Cloud Console, die gcloud CLI oder die Compute Engine API.
Console
Gehen Sie so vor, um mithilfe der Google Cloud Console eine Instanz zu erstellen und gleichzeitig den öffentlichen SSH-Schlüssel in die Instanzmetadaten einzufügen:
Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
So fügen Sie den Instanzmetadaten einen öffentlichen SSH-Schlüssel hinzu:
Klicken Sie im Navigationsmenü auf Sicherheit.
Maximieren Sie den Abschnitt Zugriff verwalten.
Wenn Sie OS Login deaktivieren möchten, entfernen Sie das Häkchen aus dem Kästchen VM-Zugriff über IAM-Berechtigungen steuern.
Wenn Sie zulassen möchten, dass über öffentliche SSH-Schlüssel in den Projektmetadaten auf die Instanz zugegriffen wird, deaktivieren Sie das Kästchen Projektweite SSH-Schlüssel blockieren.
Klicken Sie im Bereich Manuell generierte SSH-Schlüssel hinzufügen auf Element hinzufügen.
Fügen Sie Ihren öffentlichen Schlüssel in das Textfeld ein. Die Komprimierung muss in einem der folgenden Formate erfolgen:
- Format für einen Schlüssel ohne Ablaufzeit:
KEY_VALUE USERNAME
- Format für einen Schlüssel mit einer Ablaufzeit:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung zu Linux-VMs als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
Optional: Geben Sie weitere Konfigurationsoptionen an. Weitere Informationen finden Sie unter Konfigurationsoptionen beim Erstellen von Instanzen.
Klicken Sie zum Erstellen und Starten der Instanz auf Erstellen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Wenn Sie mit der gcloud CLI eine VM erstellen und gleichzeitig einen öffentlichen SSH-Schlüssel zu den Instanzmetadaten hinzufügen möchten, verwenden Sie den Befehl
gcloud compute instances create:gcloud compute instances create VM_NAME \ --metadata=ssh-keys=PUBLIC_KEY
Dabei gilt:
VM_NAME: der Name der neuen VM.PUBLIC_KEY: Ihr öffentlicher SSH-Schlüssel in einem der folgenden Formate:- Format für einen Schlüssel ohne Ablaufzeit:
USERNAME:KEY_VALUE
- Format für einen Schlüssel mit einer Ablaufzeit:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
Mit dem Flag
--metadata-from-file=ssh-keys=FILE_PATHkönnen Sie mehrere SSH-Schlüssel hinzufügen. Fügen Sie in der Datei eine Liste von Nutzernamen und öffentlichen SSH-Schlüsseln in einem der vorherigen Formate hinzu.
Terraform
Verwenden Sie die Ressource google_compute_instance, um Ihren Instanzmetadaten einen öffentlichen SSH-Schlüssel hinzuzufügen.
REST
Wenn Sie eine VM erstellen und gleichzeitig den öffentlichen SSH-Schlüssel zu den Instanzmetadaten mit Compute Engine hinzuzufügen möchten, erstellen Sie eine POST-Anfrage an die Methode instances.insert:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Dabei gilt:
PROJECT_ID: die Projekt-IDZONE: die Zone der VM
Geben Sie im Anfragetext die Nutzernamen und öffentlichen SSH-Schlüssel im Attribut items an:
...
{
"items": [
{
"key": "ssh-keys",
"value": "PUBLIC_KEY"
}
]
}
...
Ersetzen Sie PUBLIC_KEY durch Ihren öffentlichen Schlüssel in einem der folgenden Formate:
- Format für einen Schlüssel ohne Ablaufzeit:
USERNAME:KEY_VALUE
- Format für einen Schlüssel mit einer Ablaufzeit:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
Sie können mehrere SSH-Schlüssel hinzufügen, indem Sie zwischen den Schlüsseln \n einfügen.
SSH-Schlüssel nach VM-Erstellung zu Instanzmetadaten hinzufügen
Sie können nach der VM-Erstellung SSH-Schlüssel zu Instanzmetadaten hinzufügen. Verwenden Sie dazu dieGoogle Cloud Console, die gcloud CLI oder die Compute Engine API.
Console
So fügen Sie den Instanzmetadaten mit derGoogle Cloud Console einen öffentlichen SSH-Schlüssel hinzu:
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:
Klicken Sie auf den Namen der VM, für die Sie einen SSH-Schlüssel hinzufügen möchten.
Klicken Sie auf Bearbeiten.
Klicken Sie unter SSH-Schlüssel auf Element hinzufügen.
Fügen Sie Ihren öffentlichen Schlüssel in das Textfeld ein. Der Schlüssel muss eines der folgenden Formate haben:
- Format für einen Schlüssel ohne Ablaufzeit:
KEY_VALUE USERNAME
- Format für einen Schlüssel mit einer Ablaufzeit:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung zu Linux-VMs als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
Klicken Sie auf Speichern.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Wenn bereits SSH-Schlüssel in Instanzmetadaten vorhanden sind, müssen Sie diese jedes Mal den Instanzmetadaten neu hinzufügen, wenn Sie mit der gcloud CLI einen neuen SSH-Schlüssel hinzufügen. Wenn Sie Ihre vorhandenen Schlüssel nicht noch einmal hinzufügen, werden die vorhandenen Schlüssel durch das Hinzufügen eines neuen Schlüssels gelöscht.
So fügen Sie den Instanzmetadaten mit der gcloud CLI einen öffentlichen SSH-Schlüssel hinzu:
Wenn Ihre VM bereits öffentliche SSH-Schlüssel auf Instanzebene hat, rufen Sie sie aus den Metadaten ab und fügen Sie sie einer neuen Datei hinzu:
Führen Sie den Befehl
gcloud compute instances describeaus, 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üssen.
Die entsprechende Ausgabe sieht etwa so aus:
... metadata: ...
- key: ssh-keysvalue: |- 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 Schlüssel ein, die Sie gerade kopiert haben.
Fügen Sie Ihren neuen Schlüssel am Ende der Liste in einem der folgenden Formate hinzu:
- Format für einen Schlüssel ohne Ablaufzeit:
USERNAME:KEY_VALUE
- Format für einen Schlüssel mit einer Ablaufzeit:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Speichern und schließen Sie die Datei.
Führen Sie den Befehl
gcloud compute instances add-metadataaus, um den Wertssh-keysfestzulegen:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
Dabei gilt:
VM_NAME: die VM, für die Sie den SSH-Schlüssel hinzufügen möchtenKEY_FILEmit einem der folgenden:- Der Pfad zu der Datei, die Sie im vorherigen Schritt erstellt haben, wenn die VM SSH-Schlüssel enthalten hat
- Der Pfad zu Ihrer neuen öffentlichen SSH-Schlüsseldatei, wenn die VM keine SSH-Schlüssel enthalten hat
REST
Wenn bereits SSH-Schlüssel in Instanzmetadaten vorhanden sind, müssen Sie diese jedes Mal den Instanzmetadaten hinzufügen, wenn Sie mit der Compute Engine API einen neuen SSH-Schlüssel hinzufügen. Wenn Sie Ihre vorhandenen Schlüssel nicht noch einmal hinzufügen, werden die vorhandenen Schlüssel durch das Hinzufügen eines neuen Schlüssels gelöscht.
So fügen Sie den Instanzmetadaten mithilfe der Compute Engine API einen öffentlichen SSH-Schlüssel hinzu:
Rufen Sie die Werte
fingerprintundssh-keysaus den Metadaten mit der Methodeinstances.getab.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Dabei gilt:
PROJECT_ID: Ihre Projekt-IDZONE: Zone der VM, der einen SSH-Schlüssel hinzugefügt werden sollVM_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"}" } ] ...Fügen Sie den neuen Wert
ssh-keysmit der Methodeinstances.setMetadatahinzu.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }Dabei gilt:
PROJECT_ID: Ihre Projekt-IDEXISTING_SSH_KEYS: der Wert des Schlüsselsssh-keysaus der Antwort derinstances.get-AnfrageFINGERPRINT: derfingerprintaus der Antwort derprojects.get-AnfrageNEW_SSH_KEY: der neue SSH-Schlüssel in einem der folgenden Formate:- Format für einen Schlüssel ohne Ablaufzeit:
USERNAME:KEY_VALUE
- Format für einen Schlüssel mit einer Ablaufzeit:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
Dabei gilt:
KEY_VALUE: der Wert des öffentlichen SSH-SchlüsselsUSERNAME: Ihr Nutzername. Beispiel:cloudysanfranciscoodercloudysanfrancisco_gmail_com.Bei Linux-VMs kann
USERNAMEnichtrootsein, es sei denn, Sie konfigurieren Ihre VM so, dass eine Root-Anmeldung zugelassen wird. Weitere Informationen finden Sie unter Verbindung als Root-Nutzer herstellen.Bei Windows-VMs, die Active Directory (AD) verwenden, muss dem Nutzernamen die AD-Domain im Format
DOMAIN\vorangestellt werden. Beispiel: Der Nutzercloudysanfranciscoinnerhalb des ADad.example.comhat denUSERNAMEexample\cloudysanfrancisco.EXPIRE_TIME: die Zeit, zu der der Schlüssel abläuft, im ISO 8601-Format. Beispiel:2021-12-04T20:12:00+0000
- Format für einen Schlüssel ohne Ablaufzeit:
Nächste Schritte
- Verbindung zu VMs herstellen
- Zugriff auf Instanzen verwalten
- Dateien auf VMs übertragen
- Mehr darüber erfahren, wie SSH-Verbindungen zu Linux-VMs in Compute Engine funktionieren.