Cette page explique comment utiliser la CLI gcloud pour vous connecter à votre poste de travail depuis une machine locale à l'aide de SSH (ou de tout autre protocole TCP).
Cloud Workstations utilise un tunnel pour transférer le trafic TCP entre un port de votre machine locale et un port de votre poste de travail, sans exposer ouvertement votre poste de travail à Internet. Les connexions sont authentifiées à l'aide des identifiants de l'CLI gcloud et autorisées en fonction des stratégies IAM du poste de travail cible.
Une fois le tunnel TCP établi entre votre port local et la station de travail, vous pouvez l'utiliser pour transférer le trafic depuis un client SSH, curl ou toute autre application utilisant TCP.
Pour plus de commodité, Cloud Workstations fournit la commande gcloud workstations ssh, qui établit le tunnel TCP et exécute un client SSH avec une seule commande CLI gcloud.
Pour tous les autres cas d'utilisation, exécutez la commande gcloud workstations start-tcp-tunnel pour établir le tunnel TCP et exécutez l'application qui utilisera le tunnel (par exemple, curl) dans un terminal distinct.
Avant de commencer
Si vous n'avez pas encore de poste de travail auquel vous connecter, configurez-en un.
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la CLI
gcloudavec votre identité fédérée.Assurez-vous de disposer du rôle IAM Utilisateur Cloud Workstations sur la station de travail à laquelle vous allez vous connecter.
Se connecter à votre poste de travail à l'aide de SSH
Pour établir une connexion SSH sécurisée à votre station de travail, utilisez la commande gcloud workstations ssh, qui démarre un tunnel TCP et exécute un client SSH.
Exécutez la commande suivante dans une fenêtre de terminal local :
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
Remplacez les valeurs suivantes :
PROJECT_ID: ID du projet Google Cloud contenant la station de travail. Si elle est omise, le projet actuel est utilisé.REGION: région où se trouve le cluster de la station de travail (par exemple,us-central1).CLUSTER_NAME: nom du cluster de postes de travail contenant le poste de travail.CONFIG_NAME: nom de la configuration de poste de travail contenant ces postes de travail.WORKSTATION_PORT(facultatif) : port du poste de travail auquel le trafic doit être envoyé. En cas d'omission, le trafic sera envoyé au port22. Toutes les images Cloud Workstations préconfigurées incluent un serveur SSH qui s'exécute sur le port22de la station de travail.LOCAL_PORT(facultatif) : port localhost à partir duquel le trafic sera envoyé. Les numéros de port valides sont compris entre1024et65535. Si vous omettez l'option--local-host-portou spécifiez un port0, un port inutilisé est sélectionné automatiquement.WORKSTATION_NAME: nom du poste de travail.
Configuration SSH et fichier .ssh/config
Lorsque vous utilisez gcloud workstations ssh, la commande achemine votre connexion via localhost. Par conséquent, il n'applique pas automatiquement les entrées Host de votre fichier ~/.ssh/config qui utilisent le nom de la station de travail.
Pour appliquer des configurations SSH personnalisées, choisissez l'une des options suivantes :
Option 1 : Transmettre des indicateurs sur la ligne de commande
Vous pouvez transmettre des options SSH directement au client SSH sous-jacent en les ajoutant après un double tiret (--) :
gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
WORKSTATION_NAME \
-- -o SSH_OPTION=VALUE
Option 2 : Utiliser un tunnel TCP persistant et .ssh/config
Si vous préférez utiliser votre fichier ~/.ssh/config :
Démarrez un tunnel TCP persistant dans une fenêtre de terminal distincte et spécifiez un port local :
gcloud workstations start-tcp-tunnel \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ --local-host-port=localhost:LOCAL_PORT \ WORKSTATION_NAME \ 22Ajoutez un bloc de configuration à votre fichier
~/.ssh/configsur votre ordinateur local :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 hereConnectez-vous à votre station de travail à l'aide de SSH standard :
ssh WORKSTATION_NAME
Utiliser un tunnel TCP pour transférer du trafic TCP arbitraire vers votre station de travail
Pour vous connecter à un poste de travail à l'aide d'une application TCP autre que ssh, utilisez la commande gcloud workstations start-tcp-tunnel :
Exécutez la commande CLI
gcloudsuivante pour créer un tunnel TCP authentifié.Pour copier la commande dans le presse-papiers, cliquez sur Copier l'exemple de code, puis collez la commande dans une fenêtre de terminal local :
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_PORTRemplacez les valeurs suivantes :
PROJECT_ID: ID du projet Google Cloud contenant la station de travail. Si l'option est omise, le projet actuel est utilisé.REGION: région où se trouve le cluster de la station de travail (par exemple,us-central1).CLUSTER_NAME: nom du cluster de postes de travail contenant le poste de travail.CONFIG_NAME: nom de la configuration de poste de travail contenant ces postes de travail.LOCAL_PORT(facultatif) : port localhost à partir duquel le trafic sera envoyé. Les numéros de port valides sont compris entre1024et65535. Si vous omettez l'indicateur--local-host-portou spécifiez un port de0, un port non utilisé est sélectionné automatiquement.WORKSTATION_NAME: nom de la station de travail.WORKSTATION_PORT: port du poste de travail vers lequel le trafic doit être envoyé. Les images Cloud Workstations préconfigurées incluent un serveur SSH qui s'exécute sur le port de station de travail22.
La commande CLI
gcloudeffectue un test de connectivité avec la station de travail, ouvre un tunnel, puis affiche un numéro de port :Listening on port [LOCAL_PORT].Tout le trafic envoyé à
localhost:LOCAL_PORTest transféré vers la station de travail. Le port n'est accessible que par les applications exécutées sur votre ordinateur local.Laissez la CLI
gclouds'exécuter et ouvrez un autre terminal pour exécuter l'application qui se connecte à votre poste de travail.Par exemple, si vous exécutez un serveur sur votre poste de travail qui dessert le port WORKSTATION_PORT et que, lors de l'étape précédente, vous avez créé un tunnel TCP qui transfère le trafic entre votre port local LOCAL_PORT et le port WORKSTATION_PORT du poste de travail, vous pouvez exécuter
curlsur votre machine locale pour vous connecter au serveur sur votre poste de travail :curl localhost:LOCAL_PORT Hello, world!Lorsque vous avez terminé, revenez au terminal où vous avez démarré le tunnel TCP et interrompez la CLI
gclouden appuyant sur Ctrl+C.
Utiliser des serveurs SSH sur différents ports
Les images de conteneurs personnalisées peuvent également utiliser des serveurs SSH sur n'importe quel port. Pour accepter les connexions à partir du tunnel de la CLI gcloud, vous devez configurer des serveurs SSH personnalisés pour autoriser l'authentification par mot de passe et définir l'utilisateur cible avec un mot de passe vide.
Cloud Workstations utilise Cloud IAM pour s'assurer que seul le trafic autorisé est envoyé au serveur SSH.
Maintenir la persistance des sessions SSH
Si votre connexion réseau est interrompue, votre session SSH est déconnectée. Pour que vos processus continuent de s'exécuter lorsque vous êtes déconnecté et pour vous reconnecter à votre session ultérieurement, utilisez un outil comme tmux.
Pour installer tmux sur votre poste de travail :
Installez
tmuxmanuellement dans votre session actuelle pour l'utiliser immédiatement :sudo apt update sudo apt install -y tmuxConfigurez votre poste de travail pour installer
tmuxau démarrage. Créez ou ajoutez au fichier/home/user/.workstation/customize_environmentles commandes suivantes :#!/bin/bash sudo apt update sudo apt install -y tmuxPour en savoir plus, consultez Personnaliser une image de poste de travail existante sans l'étendre.
Rendez le fichier exécutable pour qu'il s'exécute au démarrage de la station de travail :
chmod +x /home/user/.workstation/customize_environment
Une fois tmux installé :
Connectez-vous à votre station de travail :
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAMEDémarrez une nouvelle session tmux depuis votre poste de travail :
tmuxSi votre connexion est interrompue, reconnectez-vous et associez-vous à votre session en exécutant la commande suivante depuis votre terminal local :
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAME \ -- -t tmux attach
Étapes suivantes
- Définir des variables d'environnement de conteneur dans les sessions SSH pour les images de conteneurs personnalisées
- Activez le transfert X11 pour les images de conteneurs personnalisées.