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_SERVERnestas 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-keygenpara 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 2048Substitua as variáveis usando as seguintes definições.
Variável Definição KEY_FILENAMEO nome do arquivo de chave SSH. Por exemplo, o nome de arquivo my-ssh-keygera um arquivo de chave privada chamadomy-ssh-keye um arquivo de chave pública chamadomy-ssh-key.pub.USERNAMESeu nome de usuário na VM, como testuseroutestuser_gmail_com.O utilitário
ssh-keygensalva o arquivo de chave privada no caminho~/.ssh/KEY_FILENAMEe 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... testuserFaç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.yamlpara conceder acesso à instância de VM com a chave privadaKEY_FILENAMEe 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_NAMESubstitua as variáveis usando as seguintes definições:
Variável Definição VM_NAMESPACEO namespace da VM. AR_NAMEO nome do pedido de acesso. USERNAMESeu nome de usuário na VM, como testuseroutestuser_gmail_com.VM_NAMEO nome da instância de VM. Crie a chave:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ create -f access_request.yamlVerifique o status da sua solicitação de acesso:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n VM_NAMESPACE \ get virtualmachineaccessrequests.virtualmachine.gdc.googSubstitua
VM_NAMESPACEpelo namespace da VM.Um status
configuredindica que você pode se conectar à VM.Conecte-se à VM:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IPSubstitua os seguintes valores:
PATH_TO_PRIVATE_KEYcom o caminho para o arquivo de chave SSH privada que corresponde à chave pública adicionada à VM.USERNAMEcom o nome de usuário especificado ao criar a chave SSH. Por exemplo,cloudysanfrancisco_example_comoucloudysanfrancisco.EXTERNAL_IPcom 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 --kubeconfig MANAGEMENT_API_SERVER \ -n VM_NAMESPACE \ get virtualmachines.virtualmachine.gdc.goog VM_NAMESe 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
VirtualMachineAccessRequestmostrar 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:22para verificar o roteamento.
Se o
VirtualMachineAccessRequestmostrar um statusfailed, confira o status completo e analise a mensagem de erro que indica o motivo da falha na solicitação:kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n VM_NAMESPACE \ describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAMESubstitua as variáveis editáveis no comando anterior pelos seus próprios valores.
Se o status do
VirtualMachineAccessRequestestiver em branco, talvez o ambiente convidado não esteja em execução.