OS Login so einrichten, dass für SSH-Verbindungen SSH-Zertifikate erforderlich sind

VMs, die OS Login-Zertifikate unterstützen, unterstützen Verbindungen über SSH-Schlüssel und SSH-Zertifikate. SSH-Zertifikate sind SSH-Schlüssel, die von einem anderen vertrauenswürdigen Schlüssel signiert wurden, in diesem Fall von einer Zertifizierungsstelle, die von OS Login verwaltet wird. In diesem Dokument wird beschrieben, wie Sie OS Login-VMs so einrichten, dass für SSH-Verbindungen SSH-Zertifikate erforderlich sind und Verbindungen von nicht signierten SSH-Schlüsseln blockiert werden.

Wenn Sie OS Login so einrichten, dass SSH-Zertifikate für Verbindungen zu VMs erforderlich sind, sind nur SSH-Zertifikate, die von der Zertifizierungsstelle signiert wurden, für Verbindungen zu VMs zulässig. Verbindungen von nicht signierten SSH-Schlüsseln werden abgelehnt. SSH-Zertifikate laufen nach fünf Minuten ab. Danach können sie nicht mehr für die Verbindung zu VMs verwendet werden und es muss ein neues Zertifikat generiert werden.

Wir empfehlen, OS Login so einzurichten, dass für SSH-Verbindungen SSH-Zertifikate erforderlich sind. Das bietet zusätzlichen Schutz vor böswilligen Nutzern. SSH-Zertifikate sind kurzlebig und nur für eine bestimmte VM gültig. Wenn sie manipuliert werden, ist die Angriffsfläche deutlich kleiner und das Angriffsfenster deutlich kürzer als bei langlebigen SSH-Schlüsseln.

Wenn Ihre Organisation die Workforce Identity-Föderation verwendet, finden Sie unter Workforce Identity-Föderation mit OS Login verwenden Informationen dazu, wie Sie SSH-Zertifikate für Ihre Organisation aktivieren.

Hinweis

Beschränkungen

  • Die VM, zu der Sie eine Verbindung herstellen, muss OpenSSH Version 7.4 oder höher haben, um SSH-Zertifikate zu verwenden.

SSH-Zertifikate erforderlich

Sie können OS Login so einrichten, dass SSH-Zertifikate für alle SSH-Verbindungen zu OS Login-VMs in Ihrem Projekt oder für einzelne VMs erforderlich sind. Nachdem Sie OS Login so eingerichtet haben, dass SSH-Zertifikate erforderlich sind, werden für SSH-Verbindungen über die Google Cloud Console und die gcloud CLI standardmäßig SSH-Zertifikate verwendet. Wenn Sie OS Login nicht so einrichten möchten, dass Zertifikate erforderlich sind, aber Zertifikate verwenden möchten, um eine Verbindung zu VMs herzustellen, müssen Sie eine Verbindung mit Drittanbietertools herstellen, wie im Abschnitt Mit einem SSH-Zertifikat eine Verbindung zu einer VM herstellen beschrieben.

Warnung: Wenn Sie SSH-Zertifikate benötigen, lehnen VMs Verbindungen von SSH-Schlüsseln ab, die Sie zuvor für die Verwendung mit OS Login konfiguriert haben.

SSH-Zertifikate für alle VMs mit OS Login in einem Projekt erforderlich machen

Wenn Sie SSH-Zertifikate für alle Verbindungen zu allen VMs, die OS Login in Ihrem Projekt verwenden, erforderlich machen möchten, verwenden Sie die Google Cloud Console oder die gcloud CLI.

Console

Wenn Sie SSH-Zertifikate für alle Verbindungen zu OS Login-fähigen VMs erforderlich machen möchten, legen Sie in der Google Cloud Console in den Projektmetadaten enable-oslogin und enable-oslogin-certificates auf TRUE fest:

  1. Öffnen Sie die Seite Metadaten.

    Zur Seite "Metadaten"

  2. Klicken Sie auf Bearbeiten.

  3. Klicken Sie auf Zeile hinzufügen.

    1. Geben Sie im Feld Schlüssel enable-oslogin ein.
    2. Geben Sie im Feld Wert TRUE ein.
  4. Klicken Sie auf Zeile hinzufügen.

    1. Geben Sie im Feld Schlüssel enable-oslogin-certificates ein.
    2. Geben Sie im Feld Wert TRUE ein.
  5. Klicken Sie auf Speichern.

gcloud

Wenn Sie SSH-Zertifikate für alle Verbindungen zu OS Login-fähigen VMs erforderlich machen möchten, legen Sie mit dem Befehl gcloud compute project-info add-metadata die Werte enable-oslogin=TRUE und enable-oslogin-certificates=TRUE in den Projektmetadaten fest:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

SSH-Zertifikate auf einer einzelnen VM mit OS Login erforderlich machen

Wenn Sie Zertifikate für alle SSH-Verbindungen zu einer einzelnen VM, die OS Login verwendet, erforderlich machen möchten, verwenden Sie die Google Cloud Console oder die gcloud CLI.

Console

Wenn Sie SSH-Zertifikate für alle Verbindungen zu einer einzelnen VM erforderlich machen möchten, verwenden Sie dieGoogle Cloud Console, um enable-oslogin und enable-oslogin-certificates in den Instanzmetadaten auf TRUE festzulegen:

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Klicken Sie auf den Namen der VM, für die Sie SSH-Zertifikate benötigen.

  3. Klicken Sie auf Bearbeiten.

  4. Klicken Sie im Abschnitt Benutzerdefinierte Metadaten auf Element hinzufügen.

    1. Geben Sie im Feld Schlüssel enable-oslogin ein.
    2. Geben Sie im Feld Wert TRUE ein.
  5. Klicken Sie auf Zeile hinzufügen.

    1. Geben Sie im Feld Schlüssel enable-oslogin-certificates ein.
    2. Geben Sie im Feld Wert TRUE ein.
  6. Klicken Sie auf Speichern.

gcloud

Wenn Sie SSH-Zertifikate für alle Verbindungen zu einer einzelnen VM erforderlich machen möchten, verwenden Sie den Befehl gcloud compute instances add-metadata, um enable-oslogin=TRUE und enable-oslogin-certificates=TRUE in den Instanzmetadaten festzulegen:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Ersetzen Sie VM_NAME durch den Namen Ihrer VM.

Über ein SSH-Zertifikat eine Verbindung zu einer VM herstellen

Nachdem Sie OS Login so eingerichtet haben, dass SSH-Zertifikate erforderlich sind, werden für SSH-Verbindungen über die Google Cloud Konsole und die gcloud CLI standardmäßig SSH-Zertifikate verwendet. Wenn Sie OS Login nicht so einrichten möchten, dass Zertifikate erforderlich sind, aber Zertifikate verwenden möchten, um eine Verbindung zu VMs herzustellen, müssen Sie Drittanbietertools verwenden.

Console

So stellen Sie eine Verbindung zu VMs über dieGoogle Cloud Console mit SSH-in-Browser her:

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.

    SSH-Button neben dem Instanznamen.

gcloud

Verwenden Sie den Befehl gcloud beta compute ssh, um eine Verbindung zu einer VM mit einem Zertifikat herzustellen:

gcloud beta compute ssh VM_NAME

Ersetzen Sie VM_NAME durch den Namen der VM, zu der Sie eine Verbindung herstellen möchten.

Drittanbieter-Tools

So verwenden Sie ein SSH-Zertifikat mit einem SSH-Client eines Drittanbieters:

  1. Erstellen Sie einen SSH-Schlüssel, falls Sie nicht bereits einen haben.

  2. Signieren Sie Ihren öffentlichen SSH-Schlüssel mit der projects.locations.signSshPublicKey-Methode:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Projekt-ID des Projekts, das die VM enthält, zu der Sie eine Verbindung herstellen möchten.
    • LOCATION: die Region, in der sich die VM befindet, zu der Sie eine Verbindung herstellen möchten
    • PUBLIC_KEY: der Inhalt der Datei Ihres öffentlichen SSH-Schlüssels
    • COMPUTE_INSTANCE: die Compute Engine-Instanz, zu der eine Verbindung hergestellt werden soll, im Format projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: das Dienstkonto, das der Instanz zugeordnet ist. Löschen Sie dieses Feld, wenn der Instanz kein Dienstkonto zugewiesen ist.
  3. Kopieren Sie das SSH-Zertifikat aus der Ausgabe von projects.locations.signSshPublicKey und speichern Sie den Inhalt in einer neuen Datei.

  4. Legen Sie die Berechtigungen für die SSH-Zertifikatsdatei fest, indem Sie folgenden Befehl ausführen:

    sudo chmod 600 FILE_NAME
    

    Ersetzen Sie FILE_NAME durch den Namen der Datei.

  5. Stellen Sie mit dem folgenden Befehl eine Verbindung zur VM her:

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Ersetzen Sie Folgendes:

    • PATH_TO_PRIVATE_KEY: der Pfad zur privaten SSH-Schlüsseldatei.
    • PATH_TO_SSH_CERTIFICATE: der Pfad zu der Zertifikatsdatei Ihres SSH-Kontos.
    • USERNAME: Ihr OS Login-Nutzername
    • EXTERNAL_IP: Die externe IP-Adresse der VM.

Fehlerbehebung

Wenn Sie keine Verbindung zu VMs herstellen können, für die SSH-Zertifikate erforderlich sind, kann das folgende Gründe haben:

Nächste Schritte