SSH-Unterstützung

Auf dieser Seite wird beschrieben, wie Sie mit der gcloud CLI über SSH (oder ein anderes TCP-Protokoll) von einem lokalen Computer aus eine Verbindung zu Ihrer Workstation herstellen.

Cloud Workstations verwendet einen Tunnel, um TCP-Traffic zwischen einem Port auf Ihrem lokalen Computer und einem Port auf Ihrer Workstation weiterzuleiten, ohne Ihre Workstation offen im Internet zu präsentieren. Verbindungen werden mit Anmeldedaten aus der gcloud CLI authentifiziert und gemäß den IAM-Richtlinien der Zielworkstation autorisiert.

Sobald der TCP-Tunnel zwischen Ihrem lokalen Port und der Workstation eingerichtet ist, können Sie ihn verwenden, um Traffic von einem SSH-Client, `curl` oder einer anderen Anwendung, die TCP verwendet, weiterzuleiten.

Cloud Workstations bietet den gcloud workstations ssh Befehl, mit dem Sie den TCP-Tunnel einrichten und einen SSH-Client mit einem einzigen gcloud CLI-Befehl ausführen können.

Verwenden Sie für alle anderen Anwendungsfälle den gcloud workstations start-tcp-tunnel Befehl, um den TCP-Tunnel einzurichten und die Anwendung, die den Tunnel verwenden soll (z. B. curl), in einem separaten Terminal auszuführen.

Hinweis

  1. Wenn Sie noch keine Workstation haben, zu der Sie eine Verbindung herstellen können, richten Sie eine Workstation ein.

  2. Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

    gcloud init

    Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  3. Prüfen Sie, ob Sie die IAM-Rolle „Cloud Workstations-Nutzer“ für die Workstation haben, zu der Sie eine Verbindung herstellen möchten.

    IAM aufrufen

Über SSH eine Verbindung zu Ihrer Workstation herstellen

Verwenden Sie den gcloud workstations ssh Befehl, um eine sichere SSH-Verbindung zu Ihrer Workstation herzustellen. Dieser Befehl startet einen TCP-Tunnel und führt einen SSH-Client aus.

Führen Sie den folgenden Befehl in einem lokalen Terminalfenster aus:

gcloud workstations ssh \
    --project=PROJECT_ID \
    --region=REGION \
    --cluster=CLUSTER_NAME \
    --config=CONFIG_NAME  \
    --port=WORKSTATION_PORT  \
    --local-host-port=localhost:LOCAL_PORT  \
    WORKSTATION_NAME

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud Projekt-ID für das Projekt, das die Workstation enthält. Wenn nichts angegeben ist, wird das aktuelle Projekt verwendet.

  • REGION: Die Region, in der sich der Cluster der Workstation befindet, z. B. us-central1.

  • CLUSTER_NAME: Der Name des Workstation-Clusters, der die Workstation enthält.

  • CONFIG_NAME: Der Name der Workstationkonfiguration, die diese Workstation enthält.

  • WORKSTATION_PORT (Optional): Der Port auf der Workstation, an den der Traffic gesendet werden soll. Wenn nichts angegeben ist, wird der Traffic an Port 22 gesendet. Alle vorkonfigurierten Cloud Workstations-Images enthalten einen SSH-Server, der auf dem Workstation-Port 22 ausgeführt wird.

  • LOCAL_PORT (Optional): Der localhost-Port, von dem der Traffic gesendet wird. Gültige Portnummern sind 1024 bis 65535. Wenn Sie das Flag --local-host-port weglassen oder den Port 0 angeben, wird automatisch ein nicht verwendeter Port ausgewählt.

  • WORKSTATION_NAME: Der Name der Workstation.

SSH-Konfiguration und die Datei .ssh/config

Wenn Sie gcloud workstations ssh verwenden, leitet der Befehl Ihre Verbindung über localhost weiter. Daher werden Host-Einträge aus Ihrer Datei ~/.ssh/config, die den Namen der Workstation verwenden, nicht automatisch angewendet.

Wählen Sie eine der folgenden Optionen aus, um benutzerdefinierte SSH-Konfigurationen anzuwenden:

Option 1: Flags in der Befehlszeile übergeben

Sie können SSH-Optionen direkt an den zugrunde liegenden SSH-Client übergeben, indem Sie sie nach einem doppelten Bindestrich (--) anhängen:

gcloud workstations ssh \
    --project=PROJECT_ID \
    --region=REGION \
    --cluster=CLUSTER_NAME \
    --config=CONFIG_NAME \
    WORKSTATION_NAME \
    -- -o SSH_OPTION=VALUE

Option 2: Persistenter TCP-Tunnel und .ssh/config verwenden

Wenn Sie die Datei ~/.ssh/config verwenden möchten, gehen Sie so vor:

  1. Starten Sie einen persistenten TCP-Tunnel in einem separaten Terminalfenster und geben Sie einen lokalen Port an:

    gcloud workstations start-tcp-tunnel \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        --local-host-port=localhost:LOCAL_PORT \
        WORKSTATION_NAME \
        22
    
  2. Fügen Sie Ihrer Datei ~/.ssh/config auf Ihrem lokalen Computer einen Konfigurationsblock hinzu:

    Host WORKSTATION_NAME
        HostName localhost
        Port LOCAL_PORT
        User user
        # Disable host key checking for ephemeral cloud workstations
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null
        # Add any other SSH options here
    
  3. Stellen Sie über Standard-SSH eine Verbindung zu Ihrer Workstation her:

    ssh WORKSTATION_NAME
    

TCP-Tunnel verwenden, um beliebigen TCP-Traffic an Ihre Workstation weiterzuleiten

Wenn Sie mit einer anderen TCP-Anwendung als ssh eine Verbindung zu einer Workstation herstellen möchten, verwenden Sie den gcloud workstations start-tcp-tunnel Befehl:

  1. Führen Sie den folgenden gcloud CLI-Befehl aus, um einen authentifizierten TCP-Tunnel zu erstellen:

    Klicken Sie auf Codebeispiel kopieren, um den Befehl in die Zwischenablage zu kopieren, und fügen Sie ihn dann in ein lokales Terminalfenster ein:

    gcloud workstations start-tcp-tunnel \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        --local-host-port=localhost:LOCAL_PORT \
        WORKSTATION_NAME \
        WORKSTATION_PORT
    

    Ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die Google Cloud Projekt-ID für das Projekt, das die Workstation enthält. Wenn nichts angegeben ist, wird das aktuelle Projekt verwendet.

    • REGION: Die Region, in der sich der Cluster der Workstation befindet, z. B. us-central1.

    • CLUSTER_NAME: Der Name des Workstation-Clusters, der die Workstation enthält.

    • CONFIG_NAME: Der Name der Workstationkonfiguration, die diese Workstation enthält.

    • LOCAL_PORT (Optional): Der localhost-Port, von dem der Traffic gesendet wird. Gültige Portnummern sind 1024 bis 65535. Wenn Sie das Flag --local-host-port weglassen oder den Port 0 angeben, wird automatisch ein nicht verwendeter Port ausgewählt.

    • WORKSTATION_NAME: Der Name der Workstation.

    • WORKSTATION_PORT: Der Workstation-Port, an den der Traffic gesendet werden soll. Vorkonfigurierte Cloud Workstations-Images enthalten einen SSH-Server, der auf dem Workstation-Port 22 ausgeführt wird.

  2. Der gcloud CLI-Befehl führt einen Konnektivitätstest mit der Workstation durch, öffnet einen Tunnel und zeigt dann eine Portnummer an:

    Listening on port [LOCAL_PORT].
    

    Der gesamte an localhost:LOCAL_PORT gesendete Traffic wird an die Workstation weitergeleitet. Der Port ist nur für Anwendungen zugänglich, die auf Ihrem lokalen Computer ausgeführt werden.

  3. Lassen Sie die gcloud CLI ausgeführt und öffnen Sie ein weiteres Terminal, um die Anwendung auszuführen, die eine Verbindung zu Ihrer Workstation herstellt.

    Wenn Sie beispielsweise einen Server auf Ihrer Workstation ausführen, der den Port WORKSTATION_PORT bereitstellt, und Sie im vorherigen Schritt einen TCP-Tunnel erstellt haben, der Traffic zwischen Ihrem lokalen Port LOCAL_PORT und dem Workstation-Port WORKSTATION_PORT weiterleitet, können Sie curl auf Ihrem lokalen Computer ausführen, um eine Verbindung zum Server auf Ihrer Workstation herzustellen:

    curl localhost:LOCAL_PORT
    Hello, world!
    
  4. Wenn Sie fertig sind, kehren Sie zum Terminal zurück, in dem Sie den TCP Tunnel gestartet haben, und unterbrechen Sie die gcloud CLI, indem Sie Strg + C drücken.

SSH-Server auf verschiedenen Ports verwenden

Benutzerdefinierte Container-Images können auch SSH-Server auf einem beliebigen Port verwenden. Um Verbindungen vom gcloud CLI-Tunnel zu unterstützen, müssen Sie benutzerdefinierte SSH-Server so konfigurieren, dass die Passwortauthentifizierung zulässig ist, und den Zielnutzer mit einem leeren Passwort festlegen. Cloud Workstations verwendet Cloud IAM um sicherzustellen, dass nur autorisierter Traffic an den SSH-Server gesendet wird.

SSH-Sitzungen persistent halten

Wenn Ihre Netzwerkverbindung unterbrochen wird, wird die SSH-Sitzung getrennt. Wenn Ihre Prozesse während der Trennung weiter ausgeführt werden sollen und Sie später wieder eine Verbindung zu Ihrer Sitzung herstellen möchten, verwenden Sie ein Tool wie tmux.

So installieren Sie tmux auf Ihrer Workstation:

  1. Installieren Sie tmux manuell in Ihrer aktuellen Sitzung, um es sofort zu verwenden:

    sudo apt update
    sudo apt install -y tmux
    
  2. Konfigurieren Sie Ihre Workstation so, dass tmux beim Start installiert wird. Erstellen Sie die Datei /home/user/.workstation/customize_environment oder fügen Sie ihr die folgenden Befehle hinzu:

    #!/bin/bash
    sudo apt update
    sudo apt install -y tmux
    

    Weitere Informationen finden Sie unter Vorhandenes Workstation-Image anpassen, ohne es zu erweitern.

  3. Machen Sie die Datei ausführbar, damit sie beim Start der Workstation ausgeführt wird:

    chmod +x /home/user/.workstation/customize_environment
    

Sobald tmux installiert ist:

  1. Stellen Sie eine Verbindung zu Ihrer Workstation her:

    gcloud workstations ssh \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        WORKSTATION_NAME
    
  2. Starten Sie eine neue tmux-Sitzung von Ihrer Workstation aus:

    tmux
    
  3. Wenn die Verbindung unterbrochen wird, stellen Sie sie wieder her und stellen Sie mit dem folgenden Befehl aus Ihrem lokalen Terminal eine Verbindung zu Ihrer Sitzung her:

    gcloud workstations ssh \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        WORKSTATION_NAME \
        -- -t tmux attach
    

Nächste Schritte