Questa pagina descrive come utilizzare la CLI gcloud per connetterti alla tua
workstation da una macchina locale utilizzando SSH (o qualsiasi altro protocollo TCP).
Cloud Workstations utilizza un tunnel per inoltrare il traffico TCP tra una porta sulla tua macchina locale e una porta sulla tua workstation senza esporre apertamente la workstation a internet. Le connessioni vengono autenticate utilizzando
le credenziali della CLI gcloud e autorizzate in base alle
policy IAM della workstation di destinazione.
Una volta stabilito il tunnel TCP tra la porta locale e la workstation, puoi utilizzarlo per inoltrare il traffico da un client SSH, curl o qualsiasi altra applicazione che utilizza TCP.
Per comodità, Cloud Workstations fornisce il comando
gcloud workstations ssh, che stabilisce il tunnel TCP ed esegue un client SSH con un singolo comando CLI gcloud.
Per tutti gli altri casi d'uso, utilizza il comando
gcloud workstations start-tcp-tunnel
per stabilire il tunnel TCP ed eseguire l'applicazione che utilizzerà il
tunnel (ad esempio, curl) in un terminale separato.
Prima di iniziare
Se non hai ancora una workstation a cui connetterti, configurane una.
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere alla CLI
gcloudcon la tua identità federata.Assicurati di disporre del ruolo IAM Utente Cloud Workstations nella workstation a cui ti connetterai.
Connettiti alla workstation tramite SSH
Per stabilire una connessione SSH sicura alla tua workstation, utilizza il comando
gcloud workstations ssh, che avvia un tunnel TCP ed esegue un client SSH.
Esegui questo comando in una finestra del terminale locale:
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
Sostituisci i seguenti valori:
PROJECT_ID: l'ID progetto Google Cloud del progetto contenente la workstation. Se omesso, viene utilizzato il progetto corrente.REGION: la regione in cui si trova il cluster della workstation, ad esempious-central1.CLUSTER_NAME: il nome del cluster di workstation che contiene la workstation.CONFIG_NAME: il nome della configurazione della workstation contenente queste workstation.WORKSTATION_PORT(facoltativo): la porta sulla workstation a cui deve essere inviato il traffico. Se omesso, il traffico verrà inviato alla porta22. Tutte le immagini Cloud Workstations preconfigurate includono un server SSH in esecuzione sulla porta22della workstation.LOCAL_PORT(facoltativo): la porta localhost da cui verrà inviato il traffico. I numeri di porta validi sono compresi tra1024e65535. Se ometti il flag--local-host-porto specifichi una porta0, viene selezionata automaticamente una porta non utilizzata.WORKSTATION_NAME: il nome della workstation.
Configurazione SSH e file .ssh/config
Quando utilizzi gcloud workstations ssh, il comando indirizza la connessione
tramite localhost. Di conseguenza, non applica automaticamente le voci Host
del file ~/.ssh/config che utilizzano il nome della workstation.
Per applicare configurazioni SSH personalizzate, scegli una delle seguenti opzioni:
Opzione 1: trasmetti i flag sulla riga di comando
Puoi passare le opzioni SSH direttamente al client SSH sottostante aggiungendole dopo un doppio trattino (--):
gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
WORKSTATION_NAME \
-- -o SSH_OPTION=VALUE
Opzione 2: utilizza un tunnel TCP persistente e .ssh/config
Se preferisci utilizzare il file ~/.ssh/config:
Avvia un tunnel TCP persistente in una finestra del terminale separata e specifica una porta locale:
gcloud workstations start-tcp-tunnel \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ --local-host-port=localhost:LOCAL_PORT \ WORKSTATION_NAME \ 22Aggiungi un blocco di configurazione al file
~/.ssh/configsulla tua macchina locale: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 hereConnettiti alla workstation utilizzando SSH standard:
ssh WORKSTATION_NAME
Utilizza un tunnel TCP per inoltrare traffico TCP arbitrario alla workstation
Per connetterti a una workstation utilizzando un'applicazione TCP diversa da ssh, utilizza il comando
gcloud workstations start-tcp-tunnel:
Esegui questo comando
gcloudCLI per creare un tunnel TCP autenticato.Per copiare il comando nel buffer di copia e incolla, fai clic su Copia esempio di codice e poi incolla il comando in una finestra del terminale locale:
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_PORTSostituisci i seguenti valori:
PROJECT_ID: l'ID progetto Google Cloud del progetto contenente la workstation. Se omesso, viene utilizzato il progetto corrente.REGION: la regione in cui si trova il cluster della workstation, ad esempious-central1.CLUSTER_NAME: il nome del cluster di workstation che contiene la workstation.CONFIG_NAME: il nome della configurazione della workstation che contiene queste workstation.LOCAL_PORT(facoltativo): la porta localhost da cui verrà inviato il traffico. I numeri di porta validi sono compresi tra1024e65535. Se ometti il flag--local-host-porto specifichi una porta0, viene selezionata automaticamente una porta non utilizzata.WORKSTATION_NAME: il nome della workstation.WORKSTATION_PORT: la porta della workstation a cui deve essere inviato il traffico. Le immagini Cloud Workstations preconfigurate includono un server SSH in esecuzione sulla porta22della workstation.
Il comando CLI
gcloudesegue un test di connettività con la workstation, apre un tunnel e poi visualizza un numero di porta:Listening on port [LOCAL_PORT].Tutto il traffico inviato a
localhost:LOCAL_PORTviene inoltrato alla workstation. La porta è accessibile solo dalle applicazioni in esecuzione sul tuo computer locale.Lascia in esecuzione la CLI
gcloude apri un altro terminale per eseguire l'applicazione che si connette alla tua workstation.Ad esempio, se esegui un server sulla tua workstation che gestisce la porta WORKSTATION_PORT e nel passaggio precedente hai creato un tunnel TCP che inoltra il traffico tra la porta locale LOCAL_PORT e la porta della workstation WORKSTATION_PORT, puoi eseguire
curlsulla tua macchina locale per connetterti al server sulla tua workstation:curl localhost:LOCAL_PORT Hello, world!Al termine, torna al terminale in cui hai avviato il tunnel TCP e interrompi la CLI
gcloudpremendo Ctrl+C.
Utilizzare server SSH su porte diverse
Le immagini container personalizzate possono utilizzare anche server SSH su qualsiasi porta. Per supportare le connessioni dal tunnel della CLI gcloud, devi configurare server SSH personalizzati per consentire l'autenticazione tramite password e impostare l'utente di destinazione con una password vuota.
Cloud Workstations utilizza
Cloud IAM
per garantire che solo il traffico autorizzato venga inviato al server SSH.
Mantenere persistenti le sessioni SSH
Se la connessione di rete si interrompe, la sessione SSH si disconnette. Per mantenere
i processi in esecuzione durante la disconnessione e ricollegarti alla sessione in un secondo momento,
utilizza uno strumento come tmux.
Per installare tmux sulla workstation:
Installa
tmuxmanualmente nella sessione corrente per utilizzarlo immediatamente:sudo apt update sudo apt install -y tmuxConfigura la workstation per installare
tmuxall'avvio. Crea o aggiungi al file/home/user/.workstation/customize_environmentper includere i seguenti comandi:#!/bin/bash sudo apt update sudo apt install -y tmuxPer saperne di più, vedi Personalizzare un'immagine workstation esistente senza estenderla.
Rendi eseguibile il file in modo che venga eseguito all'avvio della workstation:
chmod +x /home/user/.workstation/customize_environment
Una volta installato tmux:
Connettiti alla workstation:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAMEAvvia una nuova sessione tmux dalla workstation:
tmuxSe la connessione si interrompe, riconnettiti e collegati alla sessione eseguendo il seguente comando dal terminale locale:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAME \ -- -t tmux attach
Passaggi successivi
- Imposta le variabili di ambiente del container nelle sessioni SSH per le immagini container personalizzate
- Attiva l'inoltro X11 per le immagini container personalizzate