Este documento descreve como configurar apps para estabelecer ligação programática entre duas instâncias de máquinas virtuais (VMs) através do SSH e do Início de sessão do SO. A ativação de apps para usar o SSH pode ser útil para automatizar processos de gestão do sistema.
Todos os exemplos de código usados neste guia estão alojados na página do GitHub GoogleCloudPlatform/python-docs-samples.
Antes de começar
- Configure o SSH para uma conta de serviço.
- Configure o Início de sessão no SO no seu projeto ou numa VM que é executada como uma conta de serviço.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
Configure uma app SSH
Configure a sua app para gerir chaves SSH e iniciar ligações SSH a VMs do Compute Engine. A um nível elevado, a sua app deve fazer o seguinte:
- Importe a biblioteca do Início de sessão do SO Google para criar bibliotecas cliente, o que lhe permite fazer a autenticação na API de Início de sessão do SO.
- Inicialize o objeto cliente do Início de sessão do SO para permitir que a sua app use o Início de sessão do SO.
- Implemente um método
create_ssh_key()
que gere uma chave SSH para a conta de serviço da VM e adicione a chave pública à conta de serviço. - Chame o método
get_login_profile()
da biblioteca de Início de sessão do SO para obter o nome de utilizador POSIX que a conta de serviço usa. - Implemente um método
run_ssh()
para executar um comando SSH remoto. - Remova os ficheiros de chaves SSH temporárias.
App SSH de exemplo
A app de exemplo
oslogin_service_account_ssh.py
demonstra uma possível implementação de uma app SSH. Neste exemplo, a app usa o métodorun_ssh()
para executar um comando numa instância remota e devolver o resultado do comando.Execute a app SSH
Depois de criar uma app que usa SSH, pode executá-la seguindo um processo semelhante ao exemplo abaixo, que instala e executa a app de exemplo
oslogin_service_account_ssh.py
. As bibliotecas que instala podem variar consoante a linguagem de programação que a app usa.Em alternativa, pode escrever uma app que importe
oslogin_service_account_ssh.py
e a execute diretamente.Estabeleça ligação à VM que aloja a app SSH.
Na VM, instale o
pip
e a biblioteca cliente Python 3:sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
Opcional: se estiver a usar a app de exemplo
oslogin_service_account_ssh.py
, transfira-a de GoogleCloudPlatform/python-docs-samples:curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
Execute a app SSH. A app de exemplo usa
argparse
para aceitar variáveis da linha de comandos. Neste exemplo, dê instruções à app para instalar e executarcowsay
noutra VM no seu projeto.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=PROJECT_ID --instance=VM_NAME --zone=ZONE
Substitua o seguinte:
PROJECT_ID
: o ID do projeto da VM à qual a app se está a ligar.VM_NAME
: o nome da VM à qual a app se está a ligar.ZONE
: a zona da VM à qual a app está a estabelecer ligação.
O resultado é semelhante ao seguinte:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
O que se segue?
- Transfira e veja o exemplo de código completo. O exemplo completo inclui um pequeno exemplo da utilização de todos estes métodos em conjunto. Pode transferi-lo, alterá-lo e executá-lo de acordo com as suas necessidades.
- Saiba mais sobre como funcionam as ligações SSH no Compute Engine, incluindo a configuração e o armazenamento da chave SSH.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-25 UTC.
-