O Google Distributed Cloud (GDC) air-gapped usa a autenticação SSH baseada em chaves para estabelecer ligações a instâncias de máquinas virtuais (VM). Por predefinição, as palavras-passe não estão configuradas para utilizadores locais em VMs com um sistema operativo (SO).
Antes de começar
Antes de estabelecer ligação a uma VM, tem de cumprir os seguintes pré-requisitos:
- Ative a gestão de acesso. Não pode continuar sem a gestão de acesso ativada no ambiente de convidado. Por predefinição, a gestão de acesso está ativada em novas VMs.
- Ative o acesso externo da VM para qualquer par na porta 22 do Protocolo de controlo de transmissão (TCP).
ProjectNetworkPolicy
(PNP) no projeto onde a VM reside.
- Ao configurar um PNP no projeto, pode aceder à VM fora do projeto ou da organização.
- Para diagnosticar se não tem um PNP, pergunte ao seu operador de infraestrutura (IO).
Para usar os comandos da gdcloud
interface de linhas de comando (CLI), certifique-se de que transferiu, instalou e configurou a CLI gdcloud
.
Todos os comandos para a nuvem distribuída usam a CLI gdcloud
ou kubectl
e requerem um ambiente de sistema operativo (SO).
Obtenha o caminho do ficheiro kubeconfig
Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:
Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.
Use o caminho para o ficheiro kubeconfig do servidor da API de gestão para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Peça autorizações e acesso
Para realizar as tarefas indicadas nesta página, tem de ter a função de administrador da máquina virtual do projeto. Siga os passos para
validar
que tem a função de administrador de máquinas virtuais do projeto (project-vm-admin
) no espaço de nomes
do projeto onde a VM reside.
Para operações de VM que usam a consola do GDC ou a CLI gdcloud,
peça ao administrador de IAM do projeto para lhe atribuir a função de administrador de máquinas virtuais do projeto e a função de visualizador do projeto (project-viewer
).
Estabeleça uma ligação de VM
Esta secção descreve como estabelecer uma ligação a uma VM com um sistema operativo (SO) específico.
Ligue-se a uma VM
Para estabelecer uma ligação a uma VM com um SO específico, use a consola GDC, a CLI gdcloud ou a API Virtual Machine Manager.
Consola
No menu de navegação, clique em Máquinas virtuais > Instâncias.
Na lista de VMs, encontre a linha da VM em execução à qual quer estabelecer ligação. Na coluna Ligar, clique em SSH.
É aberto um terminal do navegador SSH. Introduza qualquer comando na shell ou clique em FTP para navegar na estrutura de ficheiros e carregar ficheiros.
gdcloud
Estabeleça ligação a uma VM através de 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 tiver
definido propriedades predefinidas
para a CLI, pode omitir a flag --project
deste comando. Por exemplo:
gdcloud compute ssh VM_NAME
API
Ligue-se a uma VM:
- Abra um terminal.
- Crie um par de chaves SSH.
- Carregue a chave pública e o nome de utilizador com um valor de tempo de vida (TTL).
O GDC obtém a chave SSH e o nome de utilizador e cria uma conta de utilizador com o nome de utilizador. Nas VMs, o GDC armazena a chave pública no ficheiro ~/.ssh/authorized_keys
do utilizador na VM.
Conclua os passos seguintes para estabelecer ligação a uma VM a partir da linha de comandos:
Crie um par de chaves SSH e um nome de utilizador.
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 seguinte 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 ficheiro da chave SSH. Por exemplo, o nome do ficheiro my-ssh-key
gera um ficheiro de chave privada denominadomy-ssh-key
e um ficheiro de chave pública denominadomy-ssh-key.pub
.USERNAME
O seu nome de utilizador na VM, como testuser
outestuser_gmail_com
.O utilitário
ssh-keygen
guarda o ficheiro de chave privada no caminho~/.ssh/KEY_FILENAME
e o ficheiro de chave pública no caminho~/.ssh/KEY_FILENAME.pub
.Uma chave pública para o utilizador,
testuser
, é semelhante ao seguinte exemplo:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuser
Carregue a chave para a VM e crie um recurso do Kubernetes com a chave pública, o nome de utilizador e o valor de tempo de vida (TTL) da chave.
O exemplo seguinte usa um ficheiro
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 com as seguintes definições:
Variável Definição VM_NAMESPACE
O espaço de nomes da VM. AR_NAME
O nome do pedido de acesso. USERNAME
O seu nome de utilizador 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 estado do seu pedido de acesso:
kubectl get virtualmachineaccessrequests.virtualmachine.gdc.goog -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER
Substitua
VM_NAMESPACE
pelo espaço de nomes da VM.Um estado
configured
indica que pode estabelecer ligação à VM.Estabeleça ligação à VM:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Substitua os seguintes valores:
PATH_TO_PRIVATE_KEY
com o caminho para o ficheiro de chave SSH privada que corresponde à chave pública que adicionou à VM.USERNAME
com o nome de utilizador que especificou quando criou a chave SSH. Por exemplo,cloudysanfrancisco_example_com
oucloudysanfrancisco
.EXTERNAL_IP
com o endereço IP de entrada externo da VM.
Resolução de problemas
Esta secção descreve como resolver problemas que podem ocorrer ao estabelecer ligação a uma instância de VM após a criação do pedido de acesso.
Siga os passos seguintes para identificar possíveis problemas:
Verifique se a VM está em execução. Substitua as variáveis editáveis pelos seus valores no seguinte comando:
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 pode estabelecer ligação nem configurar novos pedidos.
Verifique se a VM está em execução há alguns minutos. Se a VM tiver sido iniciada recentemente, os serviços necessários para o acesso SSH podem ainda não estar em execução. Normalmente, são executados no prazo de cinco minutos após o arranque.
Verifique se não excedeu o valor de TTL no pedido de acesso. A chave é removida quando o tempo atinge o valor TTL.
Se o ícone
VirtualMachineAccessRequest
apresentar o estadoconfigured
, verifique os seguintes requisitos:- Ativou a transferência de dados para a sua VM na porta 22.
- A sua máquina encaminha para a MV. Por exemplo, pode usar o comando
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22
para verificar o encaminhamento.
Se o seu
VirtualMachineAccessRequest
apresentar o estadofailed
, veja o estado completo e reveja a mensagem de erro que indica o que causou a falha do pedido: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 estado do
VirtualMachineAccessRequest
estiver em branco, o ambiente de convidado pode não estar em execução.