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 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, você poderá usá-lo para encaminhar o tráfego de um cliente SSH, curl ou qualquer outro aplicativo que use TCP.
Para sua conveniência, o Cloud Workstations oferece 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 executar o aplicativo que 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 do Google Cloud projeto 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 duplo traço (--):
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 persistente em uma janela do 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 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 à estação de trabalho usando SSH padrão:
ssh WORKSTATION_NAME
Usar 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 copiar e colar, clique em Copiar exemplo de código e cole o comando em uma janela do 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 do Google Cloud projeto 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
gcloudrealiza um teste de conectividade com a estação de trabalho, abre um túnel e exibe 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 à 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
Imagens de contêiner personalizadas também podem usar servidores SSH em qualquer porta. Para aceitar 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 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 sua estação de trabalho para instalar o
tmuxna inicialização. Crie ou adicione ao final do 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-se 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 do contêiner em sessões SSH para imagens de contêiner personalizadas
- Ativar o encaminhamento X11 para imagens de contêiner personalizadas