Nesta página, descrevemos como usar a CLI gcloud para se conectar à sua estação de trabalho de uma máquina local usando SSH (ou qualquer outro protocolo TCP).
O Cloud Workstations usa um túnel para encaminhar o tráfego TCP entre uma porta na sua máquina local e uma porta na estação de trabalho sem expor abertamente a estação de trabalho à Internet. As conexões são autenticadas usando
credenciais da CLI gcloud e autorizadas de acordo com as
políticas do IAM da estação de trabalho de destino.
Depois que o túnel TCP for estabelecido entre a porta local e a estação de trabalho, use-o para encaminhar o tráfego de um cliente SSH, curl ou qualquer outro aplicativo que use TCP.
Para sua conveniência, o Cloud Workstations fornece o comando
gcloud workstations ssh, que estabelece o túnel TCP e executa um cliente SSH com um
único comando da CLI gcloud.
Para todos os outros casos de uso, use o comando
gcloud workstations start-tcp-tunnel
para estabelecer o túnel TCP e execute o aplicativo que vai usar o
túnel (por exemplo, curl) em um terminal separado.
Antes de começar
Se você ainda não tiver uma estação de trabalho para se conectar, configure uma.
Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI
gcloudcom sua identidade federada.Verifique se você tem o papel do IAM de Usuário do Cloud Workstations na estação de trabalho a que você vai se conectar.
Conectar-se à estação de trabalho usando SSH
Para estabelecer uma conexão SSH segura com a estação de trabalho, use o comando
gcloud workstations ssh, que inicia um túnel TCP e executa um cliente SSH.
Execute o seguinte comando em uma janela 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
Substitua os seguintes valores:
PROJECT_ID: o ID do projeto Google Cloud que contém a estação de trabalho. Se omitido, o projeto atual será usado.REGION: a região em que o cluster da estação de trabalho está localizado. Por exemplo,us-central1.CLUSTER_NAME: o nome do cluster de estação de trabalho que contém a estação de trabalho.CONFIG_NAME: o nome da configuração da estação de trabalho que contém essas estações.WORKSTATION_PORT(opcional): a porta na estação de trabalho para onde o tráfego deve ser enviado. Se omitido, o tráfego será enviado para a porta22. Todas as imagens pré-configuradas do Cloud Workstations incluem um servidor SSH que é executado na porta22da estação de trabalho.LOCAL_PORT(opcional): a porta do localhost de onde o tráfego será enviado. Os números de porta válidos são de1024a65535. Se você omitir a flag--local-host-portou especificar uma porta de0, uma porta não utilizada será selecionada automaticamente.WORKSTATION_NAME: o nome da estação de trabalho.
Configuração do SSH e arquivo .ssh/config
Quando você usa gcloud workstations ssh, o comando encaminha sua conexão
pelo localhost. Como resultado, ele não aplica automaticamente entradas Host do arquivo ~/.ssh/config que usam o nome da estação de trabalho.
Para aplicar configurações personalizadas de SSH, escolha uma das seguintes opções:
Opção 1: transmitir flags na linha de comando
É possível transmitir opções de SSH diretamente ao cliente SSH subjacente anexando-as após um traço duplo (--):
gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
WORKSTATION_NAME \
-- -o SSH_OPTION=VALUE
Opção 2: usar um túnel TCP persistente e .ssh/config
Se você preferir usar seu arquivo ~/.ssh/config:
Inicie um túnel TCP permanente em uma janela de terminal separada e especifique uma porta 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 \ 22Adicione um bloco de configuração ao arquivo
~/.ssh/configna sua máquina 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 hereConecte-se à sua estação de trabalho usando o SSH padrão:
ssh WORKSTATION_NAME
Use um túnel TCP para encaminhar tráfego TCP arbitrário para sua estação de trabalho
Para se conectar a uma estação de trabalho usando um aplicativo TCP diferente de ssh, use o comando
gcloud workstations start-tcp-tunnel:
Execute o seguinte comando da CLI
gcloudpara criar um túnel TCP autenticado.Para copiar o comando para o buffer de cópia e colagem, clique em Copiar exemplo de código e cole o comando em uma janela 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_PORTSubstitua os seguintes valores:
PROJECT_ID: o ID do projeto Google Cloud que contém a estação de trabalho. Se omitido, o projeto atual será usado.REGION: a região em que o cluster da estação de trabalho está localizado. Por exemplo,us-central1.CLUSTER_NAME: o nome do cluster de estação de trabalho que contém a estação de trabalho.CONFIG_NAME: o nome da configuração da estação de trabalho que contém essas estações.LOCAL_PORT(opcional): a porta do localhost de onde o tráfego será enviado. Os números de porta válidos são de1024a65535. Se você omitir a flag--local-host-portou especificar uma porta de0, uma porta não utilizada será selecionada automaticamente.WORKSTATION_NAME: o nome da estação de trabalho.WORKSTATION_PORT: a porta da estação de trabalho para onde o tráfego deve ser enviado. As imagens pré-configuradas do Cloud Workstations incluem um servidor SSH que é executado na porta22da estação de trabalho.
O comando da CLI
gcloudexecuta um teste de conectividade com a estação de trabalho, abre um túnel e mostra um número de porta:Listening on port [LOCAL_PORT].Todo o tráfego enviado para
localhost:LOCAL_PORTé encaminhado para a estação de trabalho. A porta é acessível apenas por aplicativos em execução no seu computador local.Deixe a CLI
gcloudem execução e abra outro terminal para executar o aplicativo que se conecta à sua estação de trabalho.Por exemplo, se você estiver executando um servidor na estação de trabalho que atende à porta WORKSTATION_PORT e, na etapa anterior, tiver criado um túnel TCP que encaminha o tráfego entre a porta local LOCAL_PORT e a porta da estação de trabalho WORKSTATION_PORT, execute
curlna máquina local para se conectar ao servidor na estação de trabalho:curl localhost:LOCAL_PORT Hello, world!Quando terminar, volte ao terminal em que você iniciou o túnel TCP e interrompa a CLI
gcloudpressionando Control+C.
Usar servidores SSH em portas diferentes
As imagens de contêiner personalizadas também podem usar servidores SSH em qualquer porta. Para oferecer suporte a conexões do túnel da CLI gcloud, configure servidores SSH personalizados para permitir a autenticação por senha e defina o usuário de destino com uma senha vazia.
O Cloud Workstations usa o
Cloud IAM
para garantir que apenas o tráfego autorizado seja enviado ao servidor SSH.
Manter sessões SSH persistentes
Se a conexão de rede cair, a sessão SSH será desconectada. Para manter seus
processos em execução enquanto estiver desconectado e se reconectar à sessão mais tarde,
use uma ferramenta como tmux.
Para instalar o tmux na estação de trabalho:
Instale o
tmuxmanualmente na sua sessão atual para usá-lo imediatamente:sudo apt update sudo apt install -y tmuxConfigure a estação de trabalho para instalar o
tmuxna inicialização. Crie ou adicione ao arquivo/home/user/.workstation/customize_environmentpara incluir os seguintes comandos:#!/bin/bash sudo apt update sudo apt install -y tmuxPara mais informações, consulte Personalizar uma imagem de estação de trabalho sem estender.
Torne o arquivo executável para que ele seja executado quando a estação de trabalho for iniciada:
chmod +x /home/user/.workstation/customize_environment
Depois que o tmux for instalado:
Conecte-se à estação de trabalho:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAMEInicie uma nova sessão do tmux na sua estação de trabalho:
tmuxSe a conexão cair, reconecte e anexe à sessão executando o seguinte comando no terminal local:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAME \ -- -t tmux attach
A seguir
- Definir variáveis de ambiente de contêiner em sessões SSH para imagens de contêiner personalizadas
- Ativar o encaminhamento X11 para imagens de contêiner personalizadas