O Google Distributed Cloud (GDC) isolado usa a autenticação SSH baseada em chave para estabelecer conexões com instâncias de máquina virtual (VM). Por padrão, as senhas não são configuradas para usuários locais em VMs com um sistema operacional (SO).
Antes de começar
Antes de se conectar a uma VM, é preciso atender aos seguintes pré-requisitos:
- Ativar o gerenciamento de acesso. Não é possível continuar sem o gerenciamento de acesso ativado no ambiente de convidado. Por padrão, o gerenciamento de acesso é ativado em novas VMs.
- Ative o acesso externo da VM para qualquer peer na porta 22 do protocolo TCP (TCP).
ProjectNetworkPolicy
(PNP)
no projeto em que a VM reside.
- Ao configurar um PNP no projeto, é possível acessar a VM fora do projeto ou da organização.
- Para diagnosticar se você não tem um PNP, pergunte ao operador de infraestrutura (IO).
Para usar os comandos da interface de linha de comando (CLI) gdcloud
, verifique se você baixou, instalou
e configurou a CLI gdcloud
.
Todos os comandos do Distributed Cloud usam a CLI gdcloud
ou kubectl
e exigem um ambiente de sistema operacional (SO).
Extrair o caminho do arquivo kubeconfig
Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Solicitar permissões e acesso
Para executar as tarefas listadas nesta página, você precisa ter o papel de administrador de máquina virtual do projeto. Siga as etapas para
verificar
se você tem o papel de administrador de máquina virtual do projeto (project-vm-admin
) no namespace
do projeto em que a VM reside.
Para operações de VM usando o console do GDC ou a CLI gdcloud,
peça ao administrador do IAM do projeto para atribuir a você os papéis de
administrador de máquina virtual do projeto e leitor do projeto (project-viewer
).
Estabelecer uma conexão de VM
Nesta seção, descrevemos como estabelecer uma conexão com uma VM com um sistema operacional (SO) específico.
Conectar-se a uma VM
Para estabelecer uma conexão com uma VM com um SO específico, use o console do GDC, a CLI gdcloud ou a API Virtual Machine Manager.
Console
No menu de navegação, clique em Virtual Machines > Instâncias.
Na lista de VMs, encontre a linha da VM em execução a que você quer se conectar. Na coluna Conectar, clique em SSH.
Um terminal do navegador SSH é aberto. Insira qualquer comando no shell ou clique em FTP para navegar pela estrutura de arquivos e fazer upload deles.
gdcloud
Conecte-se a uma VM usando SSH executando o comando gdcloud compute ssh
gdcloud compute ssh VM_NAME --project=PROJECT_ID
Substitua as seguintes variáveis:
- VM_NAME: o nome da VM.
- PROJECT_ID: o ID do projeto que contém a VM.
Se você tiver
definido propriedades padrão
para a CLI, poderá omitir a flag --project
desse comando. Exemplo:
gdcloud compute ssh VM_NAME
API
Conecte-se a uma VM:
- Abra um terminal.
- Crie um par de chaves SSH.
- Faça o upload da chave pública e do nome de usuário com um valor de time-to-live (TTL).
O GDC recupera a chave SSH e o nome de usuário e cria uma
conta de usuário com o nome de usuário. Nas VMs, o GDC
armazena a chave pública no arquivo ~/.ssh/authorized_keys
do usuário na
VM.
Conclua as etapas a seguir para se conectar a uma VM pela linha de comando:
Crie um par de chaves SSH e um nome de usuário.
Em estações de trabalho com SO, use o utilitário
ssh-keygen
para criar um novo par de chaves SSH. O exemplo de código a seguir cria um par de chaves RSA (Rivest–Shamir–Adleman):ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME -b 2048
Substitua as variáveis usando as seguintes definições.
Variável Definição KEY_FILENAME
O nome do arquivo de chave SSH. Por exemplo, o nome de arquivo my-ssh-key
gera um arquivo de chave privada chamadomy-ssh-key
e um arquivo de chave pública chamadomy-ssh-key.pub
.USERNAME
Seu nome de usuário na VM, como testuser
outestuser_gmail_com
.O utilitário
ssh-keygen
salva o arquivo de chave privada no caminho~/.ssh/KEY_FILENAME
e o arquivo de chave pública no caminho~/.ssh/KEY_FILENAME.pub
.Uma chave pública para o usuário
testuser
é semelhante a este exemplo:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuser
Faça upload da chave para a VM e crie um recurso do Kubernetes com a chave pública, o nome de usuário e o valor de time to live (TTL) da chave.
O exemplo a seguir usa um arquivo
access_request.yaml
para conceder acesso à instância de VM com a chave privadaKEY_FILENAME
e um valor de TTL de dez minutos:apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineAccessRequest metadata: namespace: VM_NAMESPACE name: AR_NAME spec: ssh: key: | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco ttl: 10m user: USERNAME vm: VM_NAME
Substitua as variáveis usando as seguintes definições:
Variável Definição VM_NAMESPACE
O namespace da VM. AR_NAME
O nome do pedido de acesso. USERNAME
Seu nome de usuário na VM, como testuser
outestuser_gmail_com
.VM_NAME
O nome da instância de VM. Crie a chave:
kubectl create -f access_request.yaml --kubeconfig MANAGEMENT_API_SERVER
Verifique o status da sua solicitação de acesso:
kubectl get virtualmachineaccessrequests.virtualmachine.gdc.goog -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Substitua
VM_NAMESPACE
pelo namespace da VM.Um status
configured
indica que você pode se conectar à VM.Conecte-se à VM:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Substitua os seguintes valores:
PATH_TO_PRIVATE_KEY
com o caminho para o arquivo de chave SSH privada que corresponde à chave pública adicionada à VM.USERNAME
com o nome de usuário especificado ao criar a chave SSH. Por exemplo,cloudysanfrancisco_example_com
oucloudysanfrancisco
.EXTERNAL_IP
com o endereço IP de entrada externo da VM.
Solução de problemas
Nesta seção, descrevemos como solucionar problemas que podem ocorrer ao se conectar a uma instância de VM depois de criar a solicitação de acesso.
Siga estas etapas para identificar possíveis problemas:
Verifique se a VM está em execução. Substitua as variáveis editáveis pelos seus valores no comando a seguir:
kubectl get virtualmachines.virtualmachine.gdc.goog VM_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Se a VM não estiver em execução, não será possível se conectar ou configurar novas solicitações.
Verifique se a VM está em execução há alguns minutos. Se a VM tiver acabado de ser iniciada, os serviços necessários para o acesso SSH ainda não estarão em execução. Normalmente, eles são executados em até cinco minutos após a inicialização.
Verifique se você não excedeu o valor de TTL na solicitação de acesso. A chave é removida quando o tempo atinge o valor de TTL.
Se o
VirtualMachineAccessRequest
mostrar um statusconfigured
, verifique os seguintes requisitos:- Você ativou a transferência de dados para sua VM na porta 22.
- Sua máquina é encaminhada para a VM. Por exemplo, é possível usar o comando
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22
para verificar o roteamento.
Se o
VirtualMachineAccessRequest
mostrar um statusfailed
, confira o status completo e analise a mensagem de erro que indica o motivo da falha na solicitação:kubectl describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Substitua as variáveis editáveis no comando anterior pelos seus próprios valores.
Se o status do
VirtualMachineAccessRequest
estiver em branco, talvez o ambiente convidado não esteja em execução.