Fehlerbehebung bei Cloud Run mit SSH

Mit SSH können Sie eine sichere, interaktive Shell-Verbindung zu Ihren laufenden Containerinstanzen herstellen. So erhalten Sie direkten Zugriff auf das Dateisystem und die Laufzeitumgebung des Containers und können Systemressourcen prüfen, Konfigurationen verifizieren und Fehler beheben.

SSH für Cloud Run verwendet die folgenden Dienste, um Verbindungen zu sichern:

  • Die TCP-Weiterleitung von Identity-Aware Proxy leitet SSH-Verbindungen weiter. Anfragen müssen daher Authentifizierungs- und Autorisierungsprüfungen bestehen, bevor sie Ihren Container erreichen. Sie können IAP-Zugriffsrichtlinien mit kontextsensitivem Zugriff erweitern, um den Zugriff basierend auf Attributen wie IP-Adresse und Endnutzergerät einzuschränken.
  • OS Login verwendet die SSH-Zertifikatsauthentifizierung, um Nutzer zu authentifizieren. Wenn Sie eine Verbindung herstellen, erstellt die gcloud CLI ein kurzlebiges SSH-Zertifikat für Sie, das nach fünf Minuten abläuft. Das Zertifikat wird in Ihrem Container validiert. Google prüft die IAM-Berechtigungen bei jedem Anmeldeversuch.

SSH für Cloud Run fügt dem Dateisystem Ihres Containers automatisch die erforderlichen von Google verwalteten Binärdateien hinzu, einschließlich sshd und der Binärdateien, die Ihr Zertifikat validieren. Diese Binärdateien sind nur für die Dauer der SSH-Sitzung zugänglich und werden nach Beendigung der Sitzung entfernt. Vorhandene SSH-Konfigurationen, einschließlich /etc/passwd-Einträgen, werden von Cloud Run SSH zugunsten von Google-verwalteten Konfigurationen ignoriert.

Wenn eine SSH-Sitzung eingerichtet wird, werden die Open-Source-Urheberrechtshinweise von Drittanbietern für von Google verwaltete SSH-Abhängigkeiten in Ihrem Container unter folgendem Pfad bereitgestellt: /usr/share/licenses/google_ssh/THIRD_PARTY_NOTICES.

SSH-Sitzungen und Dienstinstanzen

Beachten Sie Folgendes, wenn Sie eine Verbindung zu einem Dienst über SSH herstellen:

  • Wenn keine Instanz des Dienstes ausgeführt wird, startet Cloud Run eine neue Instanz für die SSH-Sitzung.
  • Cloud Run versucht, die Dienstinstanz für die Dauer der SSH-Sitzung aktiv zu halten. Die Instanz wird Ihnen wie gewohnt in Rechnung gestellt, solange sie aktiv ist.

Beschränkungen

Für SSH gelten die folgenden Einschränkungen:

  • SSH-Sitzungen dauern maximal 24 Stunden. Nach 24 Stunden wird die Sitzung getrennt und Sie müssen die Verbindung wiederherstellen.
  • IAP trennt SSH-Sitzungen nach einer Stunde Inaktivität. Weitere Informationen finden Sie unter Bekannte Einschränkungen der IAP-TCP-Weiterleitung.
  • SSH ist nur für Dienste verfügbar, die in der Umgebung der zweiten Generation von Cloud Run und auf Cloud Run-Instanzen ausgeführt werden.
  • Wenn Sie SSH verwenden, werden Hostschlüssel im Image überschrieben. Die Schlüssel bleiben nach dem Beenden der SSH-Sitzung überschrieben, bis die Dienstinstanz neu gestartet wird.
  • Windows: PuTTY wird nicht unterstützt. Verwenden Sie den OpenSSH-Client.
  • Bei der Verwendung von SSH sollten Sie besonders darauf achten, Ihren Container zu sichern. Berücksichtigen Sie Best Practices für die Sicherheit, z. B. das Ausführen von Anwendungscode als Nutzer ohne Root-Berechtigung.
  • Wenn eine SSH-Verbindung einen Multi-Container-Dienst mit Containerstartreihenfolge (container-dependencies) kalt startet, wird die Anfrage weitergeleitet, bevor die Containerumgebung bereit ist. Cloud Run gibt einen HTTP-500-Fehler zurück und beendet die neue Instanz sofort. Wenn Sie eine Verbindung über die Google Cloud CLI herstellen, schlägt der Befehl fehl. Stellen Sie zur Problemumgehung nur dann eine SSH-Verbindung her, wenn eine Instanz bereits ausgeführt wird. Senden Sie beispielsweise zuerst eine Anfrage an den Dienst, um eine Instanz zu starten, oder konfigurieren Sie Mindestinstanzen.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Aktivieren Sie die Cloud Run Admin API, die Cloud Resource Manager API, die Identity-Aware Proxy API und die Cloud OS Login APIs:
      gcloud services enable run.googleapis.com \
          cloudresourcemanager.googleapis.com \
          iap.googleapis.com \
          oslogin.googleapis.com
      
  7. Installieren und initialisieren Sie die gcloud CLI.
  8. Aktualisieren Sie die Komponenten:
    gcloud components update
  9. Windows: Prüfen Sie, ob der OpenSSH-Client installiert ist.

    Der OpenSSH-Client ist unter Windows 10 und höher in der Regel standardmäßig installiert. Wenn es nicht installiert ist, können Sie es installieren, indem Sie den folgenden Befehl in PowerShell als Administrator ausführen:

    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

    Weitere Informationen finden Sie unter OpenSSH installieren.

  10. Sehen Sie sich die Preise für Cloud Run an. Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. SSH-Verbindungen werden nach ausgehenden Netzwerk-Byte abgerechnet. Außerdem wird Ihnen die Instanz wie gewohnt in Rechnung gestellt, solange sie für eine SSH-Sitzung aktiv ist.
  11. Wenn Ihr Projekt VPC Service Controls (VPC-SC) verwendet, beachten Sie, dass beim Tunneling-Prozess iaptunnel.googleapis.com als Dienstname und nicht run.googleapis.com geprüft wird.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Schritte benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Wenn Sie kein Mitglied der Organisation sind, zu der das Projekt gehört, blockiert Cloud Run den SSH-Zugriff. Wenn Sie SSH-Zugriff erhalten möchten, fügen Sie die Rolle roles/compute.osLoginExternalUser hinzu oder verwenden Sie eine benutzerdefinierte Rolle mit der Berechtigung compute.oslogin.updateExternalUser.

Sie können die Rolle „Nutzer von IAP-gesicherten Tunneln“ auf Projektebene gewähren. Wenn Sie diese Rolle auf einen bestimmten Cloud Run-Dienst oder eine bestimmte Instanz beschränken möchten, führen Sie den folgenden Befehl aus:

Für einen bestimmten Dienst

gcloud beta iap tcp add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=SERVICE \
    --region=REGION \
    --member=MEMBER \
    --role=roles/iap.tunnelResourceAccessor

Ersetzen Sie Folgendes:

  • SERVICE: der Name Ihres Dienstes.
  • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
  • MEMBER: die Identität, der Zugriff gewährt werden soll.

Für eine bestimmte Instanz

gcloud beta iap tcp add-iam-policy-binding \
    --resource-type=cloud-run \
    --instance=INSTANCE \
    --region=REGION \
    --member=MEMBER \
    --role=roles/iap.tunnelResourceAccessor

Ersetzen Sie Folgendes:

  • INSTANCE: Der Name der Instanz.
  • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
  • MEMBER: die Identität, der Zugriff gewährt werden soll.

Informationen zum Gewähren der roles/iap.tunnelResourceAccessor auf Projekt- und Regionsebene finden Sie unter IAP-Zugriffsrichtlinien konfigurieren.

SSH mit Cloud Run-Diensten verwenden

Konfigurieren Sie den SSH-Zugriff auf Dienstebene und stellen Sie eine SSH-Verbindung zum Dienst her.

SSH-Zugriff auf Dienstebene konfigurieren

Sie können den Prüfzugriff auf einen bestimmten Dienst mit der gcloud CLI oder YAML zulassen:

gcloud

Verwenden Sie den folgenden Befehl, um den Zugriff auf einen vorhandenen Dienst zu aktivieren:

gcloud beta run services update SERVICE --ssh

Sie können den Prüfzugriff auf einen Dienst auch zulassen, indem Sie beim Bereitstellen des Dienstes das Flag --ssh verwenden.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Das folgende Beispiel enthält die YAML-Konfiguration:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/ssh-enabled: "true"
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
            image: IMAGE_URL
    

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Cloud Run-Dienstes.
    • REGION: die Google Cloud -Region, z. B. us-central1.
    • IMAGE_URL: ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das Format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Sie können den SSH-Zugriff für einzelne Dienste über die gcloud CLI oder YAML deaktivieren:

gcloud

Verwenden Sie den folgenden Befehl, um den Zugriff auf den Dienst zu deaktivieren:

gcloud beta run services update SERVICE --no-ssh

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Das folgende Beispiel enthält die YAML-Konfiguration:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/ssh-enabled: "false"
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
            image: IMAGE_URL
    

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Cloud Run-Dienstes.
    • REGION: die Google Cloud -Region, z. B. us-central1.
    • IMAGE_URL: ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das Format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

SSH-Verbindung zum Dienst herstellen

Verwenden Sie die gcloud CLI, um eine SSH-Verbindung zu einem Dienst herzustellen:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run-Dienste:

    Zu Cloud Run

  2. Klicken Sie auf einen Dienst, um die Seite Dienstdetails zu öffnen.

  3. Wählen Sie SSH aus. Dadurch wird Cloud Shell mit dem gcloud-SSH-Befehl geöffnet.

  4. Drücken Sie die Eingabetaste.

  5. Wenn Sie aufgefordert werden, eine Passphrase für den SSH-Schlüssel einzugeben, können Sie das Feld leer lassen. Wenn Sie jedoch eine Passphrase eingeben, müssen Sie für alle nachfolgenden SSH-Sitzungen aus demselben Arbeitsbereich dieselbe Passphrase verwenden.

  6. Wenn die SSH-Sitzung erfolgreich abgeschlossen wurde, wird in Cloud Run die folgende Meldung angezeigt:

    Project: PROJECT_ID
    Region: REGION
    Service: SERVICE
    Revision: REVISION
    Instance: INSTANCE_ID
    Container: CONTAINER
    Image: IMAGE
    
  7. Geben Sie exit ein, um die SSH-Sitzung zu beenden. Alle Änderungen, die Sie am Container vorgenommen haben, bleiben so lange erhalten, wie der Container aktiv ist. Wenn Sie die Sitzung beenden, wird der Container nicht neu gestartet oder beendet.

gcloud

Verwenden Sie den folgenden Google Cloud CLI-Befehl, um über SSH eine Verbindung zu einem Dienst herzustellen:

gcloud beta run services ssh SERVICE --region=REGION --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • SERVICE: der Name Ihres Dienstes.
  • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
  • PROJECT_ID: die Projekt-ID von Google Cloud .

Wenn Sie aufgefordert werden, eine Passphrase für den SSH-Schlüssel einzugeben, können Sie das Feld leer lassen. Wenn Sie jedoch eine Passphrase eingeben, müssen Sie für alle nachfolgenden SSH-Sitzungen aus demselben Arbeitsbereich dieselbe Passphrase verwenden.

Wenn die SSH-Sitzung erfolgreich abgeschlossen wurde, wird in Cloud Run die folgende Meldung angezeigt:

Project: PROJECT_ID
Region: REGION
Service: SERVICE
Revision: REVISION
Instance: INSTANCE_ID
Container: CONTAINER
Image: IMAGE

Geben Sie exit ein, um die SSH-Sitzung zu beenden. Alle Änderungen, die Sie am Container vorgenommen haben, bleiben so lange erhalten, wie der Container aktiv ist. Wenn Sie die Sitzung beenden, wird der Container nicht neu gestartet oder beendet.

Dienstinstanz angeben

Wenn Sie über SSH eine Verbindung zu einer bestimmten Dienstinstanz herstellen möchten, verwenden Sie die Google Cloud CLI.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run-Dienste:

    Zu Cloud Run

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Wählen Sie Logs aus.

  4. Klicken Sie auf den Logeintrag für Ihre Dienstinstanz, um ihn zu maximieren.

  5. Wählen Sie SSH-Verbindung zu dieser Instanz herstellen aus. Dadurch wird Cloud Shell mit dem gcloud-SSH-Befehl geöffnet.

  6. Drücken Sie die Eingabetaste.

gcloud

Verwenden Sie den folgenden Google Cloud CLI-Befehl, um über SSH eine Verbindung zu einer Cloud Run-Dienstinstanz herzustellen:

gcloud beta run services ssh SERVICE --region=REGION --project=PROJECT_ID \
  --revision=REVISION \
  --instance=INSTANCE_ID

Ersetzen Sie Folgendes:

  • SERVICE: der Name Ihres Dienstes.
  • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
  • PROJECT_ID: die Projekt-ID von Google Cloud .
  • REVISION: der Name der Version.
  • INSTANCE_ID: Instanz-ID. Die Dienstinstanz-ID finden Sie auf der Seite Logs im Bereich Beobachtbarkeit. Die Instanz-ID befindet sich im Feld labels für einen Logeintrag. Sie können die Instanz-ID nicht finden, wenn Sie die jeweilige Instanz beenden, bevor Sie eine Verbindung zu ihr herstellen.

Version angeben

Wenn Sie über SSH eine Verbindung zu einer bestimmten Version herstellen möchten, verwenden Sie die Google Cloud CLI.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run-Dienste:

    Zu Cloud Run

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Wählen Sie Überarbeitungsverlauf aus.

  4. Klicken Sie rechts neben der Version, auf die Sie per SSH zugreifen möchten, auf das Dreipunkt-Menü.

  5. Wählen Sie SSH-Verbindung zu Versionen herstellen aus. Dadurch wird Cloud Shell mit dem gcloud-SSH-Befehl geöffnet.

  6. Drücken Sie die Eingabetaste.

gcloud

Verwenden Sie den folgenden Google Cloud CLI-Befehl, um eine SSH-Verbindung zu einer Cloud Run-Dienstversion herzustellen:

gcloud beta run services ssh SERVICE --region=REGION --project=PROJECT_ID --revision=REVISION

Ersetzen Sie Folgendes:

  • SERVICE: der Name Ihres Dienstes.
  • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
  • PROJECT_ID: die Projekt-ID von Google Cloud .
  • REVISION: der Name der Version.

SSH mit Cloud Run-Instanzen verwenden

SSH-Zugriff auf Instanzebene konfigurieren und über SSH eine Verbindung zur Instanz herstellen

SSH-Zugriff auf Instanzebene konfigurieren

SSH ist für Instanzen standardmäßig aktiviert.

Sie können den SSH-Zugriff für einzelne Instanzen mit der gcloud CLI oder YAML deaktivieren:

gcloud

Verwenden Sie den folgenden Befehl, um den Zugriff auf die Instanz zu deaktivieren:

gcloud beta run instances update INSTANCE --no-ssh

YAML

  1. Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Das folgende Beispiel enthält die YAML-Konfiguration:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/ssh-enabled: "false"
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
        image: IMAGE_URL
    

    Ersetzen Sie Folgendes:

    • INSTANCE: der Name Ihrer Cloud Run-Instanz.
    • REGION: die Google Cloud -Region, z. B. us-central1.
    • IMAGE_URL: ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest
  3. Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:

    gcloud beta run instances replace instance.yaml

Sie können den Prüfzugriff auf eine bestimmte Instanz mit der gcloud CLI oder YAML zulassen.

gcloud

Verwenden Sie den folgenden Befehl, um den Zugriff auf eine vorhandene Instanz zu aktivieren:

gcloud beta run instances update INSTANCE --ssh

Sie können den Prüfzugriff auf eine Instanz auch zulassen, indem Sie beim Bereitstellen der Instanz das Flag --ssh verwenden.

YAML

  1. Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Das folgende Beispiel enthält die YAML-Konfiguration:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/ssh-enabled: "true"
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
        image: IMAGE_URL
    

    Ersetzen Sie Folgendes:

    • INSTANCE: der Name Ihrer Cloud Run-Instanz.
    • REGION: die Google Cloud -Region, z. B. us-central1.
    • IMAGE_URL: ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest
  3. Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:

    gcloud beta run instances replace instance.yaml

Stellen Sie mit SSH eine Verbindung zur Instanz her:

Verwenden Sie den folgenden Google Cloud CLI-Befehl, um über SSH eine Verbindung zu einer Instanz herzustellen:

  gcloud beta run instances ssh INSTANCE --region=REGION --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • INSTANCE: Der Name der Instanz.
  • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
  • PROJECT_ID: die Projekt-ID von Google Cloud .

Wenn Sie aufgefordert werden, eine Passphrase für den SSH-Schlüssel einzugeben, können Sie das Feld leer lassen. Wenn Sie jedoch eine Passphrase eingeben, müssen Sie für alle nachfolgenden SSH-Sitzungen aus demselben Arbeitsbereich dieselbe Passphrase verwenden.

Wenn die SSH-Sitzung erfolgreich abgeschlossen wurde, wird in Cloud Run die folgende Meldung angezeigt:

  Project: PROJECT_ID
  Region: REGION
  Instance: INSTANCE
  Revision: REVISION
  Container: CONTAINER
  Image: IMAGE

Geben Sie exit ein, um die SSH-Sitzung zu beenden.

Verbindung über den OpenSSH-Client herstellen

So stellen Sie eine Verbindung über Ihren OpenSSH-Client her:

  1. Führen Sie den Befehl gcloud beta run services ssh für den Zieldienst aus. Dadurch wird der SSH-Tunnel initiiert und das Zertifikat generiert.
  2. Fügen Sie Ihrer SSH-Konfiguration Folgendes hinzu:

    Host cloud-run-ssh
        HostName cloud-run-default
        User root
        IdentityFile /Users/USER/.ssh/google_compute_engine
        CertificateFile /Users/USER/.ssh/google_compute_engine_cert/PROJECT_ID_REGION_SERVICE-cert.pub
        CheckHostIP no
        HashKnownHosts no
        HostKeyAlias cloud-run-default
        IdentitiesOnly yes
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null
        ProxyUseFdpass no
        ProxyCommand /usr/local/bin/python3 -S /Users/USER/google-cloud-sdk/lib/gcloud.py beta run start-iap-tunnel --project_number=PROJECT_NUMBER --project_id=PROJECT_ID --workload_type=service --deployment_name=SERVICE --region=REGION
    

    Ersetzen Sie Folgendes:

    • USER: der Nutzername auf Ihrem lokalen Computer.
    • PROJECT_ID: die Projekt-ID von Google Cloud .
    • PROJECT_NUMBER: die Projektnummer von Google Cloud .
    • REGION: die Region, in der Ihr Dienst bereitgestellt wird.
    • SERVICE: der Name Ihres Dienstes.

    Wenn die gcloud CLI in einem anderen Ordner installiert ist, müssen Sie möglicherweise den Speicherort in der letzten Zeile aktualisieren.

  3. Führen Sie dazu diesen Befehl aus:

    ssh cloud-run-ssh
    

Ihr SSH-Zertifikat läuft nach fünf Minuten ab. Wenn Sie nach fünf Minuten versuchen, eine SSH-Verbindung zu Ihrem Dienst herzustellen, müssen Sie gcloud beta run services ssh noch einmal ausführen, um das Zertifikat neu zu generieren.

SSH-Zugriffslogs

Wenn Sie Audit-Logs für die SSH-Schlüsselverwaltung erfassen möchten, müssen Sie Audit-Logs für die Cloud OS Login API aktivieren. Weitere Informationen finden Sie unter OS Login-Audit-Logs aufrufen. Für den Zugriff auf SSH-Logs von Cloud Run-Ressourcen benötigen Sie Zugriff auf Cloud-Audit-Logs für das entsprechende Projekt.

Im folgenden Beispiel werden alle Cloud Run-Dienste für den letzten Tag abgefragt:

gcloud logging read '
  logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" AND
  protoPayload.serviceName="oslogin.googleapis.com" AND
  protoPayload.request.instance:"run.googleapis.com"
' --project=PROJECT_ID \
  --freshness=1d \
  --format="table(timestamp, protoPayload.authenticationInfo.principalSubject:label=USER, protoPayload.request.instance:label=CLOUD_RUN_SERVICE)"

SSH-Zugriff sichern und steuern

Sie können festlegen, wer SSH verwenden darf und wie es in Ihrer Umgebung eingeschränkt wird.

SSH-Zugriff mit Organisationsrichtlinien deaktivieren

Wenn Sie eine Organisationsrichtlinie zum Deaktivieren von SSH festlegen möchten, verwenden Sie die benutzerdefinierte Einschränkung, die das Aktivieren des SSH-Debugging-Zugriffs für Cloud Run-Dienste einschränkt.

Nächste Schritte