Conectar-se a VMs do Linux usando um Bastion Host


Este documento descreve como conectar uma instância de máquina virtual (VM) através de seu endereço IP interno, usando uma VM de Bastion Host. Os Bastion Hosts fornecem um ponto de entrada externo para uma rede de nuvem privada virtual (VPC) que contém VMs sem endereços IP externos. Ao usar um Bastion Host, conecte-se primeiro ao Bastion Host e, em seguida, à VM de destino.

A conexão com uma VM usando o endereço IP interno dela é útil quando a VM não tem um endereço IP externo. Se a VM tiver um endereço IP externo, conecte-se à VM usando o endereço IP externo. Se você precisar se conectar a uma VM que não tenha endereços IP externos e não puder usar um Bastion Host, analise os outros métodos listados em Opções de conexão para VMs somente internas.

Sistemas operacionais compatíveis

Esses métodos de conexão são compatíveis com todas as imagens públicas do Linux disponíveis no Compute Engine. Para o Fedora CoreOS, é necessário configurar o acesso SSH antes de usar esses métodos.

Criar uma VM do Bastion Host

Crie uma VM do Compute Engine na rede interna do cluster particular para atuar como um Bastion Host capaz de gerenciar o cluster.

Console

Crie uma VM do Bastion Host fazendo o seguinte:

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

    1. Especifique os seguintes detalhes da VM:
    • Nome: o nome da VM.
    • Tipo de máquina: um tipo de máquina. Escolha um tipo de máquina pequeno, como e2-micro.
    • Disco de inicialização Sistema operacional: qualquer SO Linux.
  2. Expanda a seção Opções avançadas e faça o seguinte:

    1. Na seção Interfaces de rede, selecione a mesma rede VPC e sub-rede que a VM de destino.

    2. Em Endereço IPv4 externo, selecione Temporário.

  3. Para criar e iniciar a VM, clique em Criar.

gcloud

Crie uma VM do Bastion Host usando o comando gcloud compute instances create:

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Crie a VM do Bastion Host executando este comando:

    gcloud compute instances create VM_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET,address=""
    

    Substitua:

    • VM_NAME: o nome da VM.
    • ZONE: a zona da VM.
    • IMAGE_FAMILY: uma família de imagem do Linux.
    • IMAGE_PROJECT: o projeto de imagem contendo a imagem.
    • SUBNET: a mesma sub-rede VPC que a VM de destino. Se você usar a VPC padrão, o SUBNET será default.

Conectar-se às VMs

Para se conectar a uma VM, conclua as etapas em uma das guias a seguir.

gcloud

Conecte-se a uma VM usando SSH por meio de um Bastion Host ao executar o comando gcloud compute ssh:

  1. Conecte-se à VM do Bastion Host ao executar o seguinte comando:

    gcloud compute ssh BASTION_NAME

    Substitua BASTION_NAME pelo nome da VM do Bastion Host.

  2. Na VM do Bastion Host, conecte-se à VM principal pelo endereço IP interno usando o flag --internal-ip:

    gcloud compute ssh VM_NAME \
        --internal-ip

    Substitua VM_NAME pelo nome da VM a que você quer se conectar.

Clientes OpenSSH

Para se conectar a uma VM por meio de um Bastion Host por um cliente do OpenSSH, faça o seguinte:

  1. Adicione uma chave SSH à VM, caso ainda não tenha feito isso.
  2. No console do Google Cloud, acesse a página Instâncias de VM e encontre o endereço IP externo da VM do Bastion Host.

    Acessar instâncias de VM

  3. Abra um terminal na estação de trabalho.
  4. Conecte-se à VM do Bastion Host ao executar o seguinte comando:

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    Substitua:

    • PATH_TO_PRIVATE_KEY: o caminho para o arquivo de chave SSH privada que corresponde à chave pública adicionada à VM.
    • USERNAME: Seu nome de usuário. Se você gerencia suas chaves SSH em metadados, o nome de usuário será aquele que você especificou quando criou a chave SSH. Para contas do Login do SO, o nome de usuário é definido no seu perfil do Google. Por exemplo, cloudysanfrancisco_example_com ou cloudysanfrancisco.
    • EXTERNAL_IP: o endereço IP externo da VM.
  5. Na VM do Bastion Host, conecte-se pelo endereço IP interno de uma VM usando o seguinte comando:

    ssh USERNAME@INTERNAL_IP

    Substitua:

    • USERNAME: seu nome de usuário Se você gerencia suas chaves SSH em metadados, o nome de usuário será aquele que você especificou quando criou a chave SSH. Para contas do Login do SO, o nome de usuário é definido no seu perfil do Google. Por exemplo, cloudysanfrancisco_example_com ou cloudysanfrancisco.
    • INTERNAL_IP: o endereço IP interno da VM.

App PuTTY

Para se conectar a uma VM por meio de um Bastion Host usando PuTTY faça o seguinte:

  1. Adicione uma chave SSH à VM de Bastion Host, caso ainda não tenha feito isso.
  2. Se a estação de trabalho ainda não tiver o app PuTTY instalado, faça o download dos arquivos do pacote PuTTY.
  3. No console do Google Cloud, acesse a página instâncias de VM e encontre o endereço IP interno da VM a que você quer se conectar.

    Acessar instâncias de VM

  4. Abra o app PuTTY. Uma janela de configuração de conexão será aberta.
  5. No campo Host Name, digite o nome de usuário associado à chave SSH e o endereço IP externo da VM a que você quer se conectar. Use o seguinte formato:

    USERNAME@EXTERNAL_IP

    Substitua:

    • USERNAME: Seu nome de usuário. Se você gerencia suas chaves SSH em metadados, o nome de usuário será aquele que você especificou quando criou a chave SSH. Para contas do Login do SO, o nome de usuário é definido no seu perfil do Google. Por exemplo, cloudysanfrancisco_example_com ou cloudysanfrancisco.
    • EXTERNAL_IP: o endereço IP externo da VM.
  6. No menu Category, navegue até Connection > SSH > Auth.
  7. No campo Arquivo de chave privada para autenticação, selecione o arquivo da chave SSH particular que corresponde à chave pública adicionada à VM.
  8. Na seção Parâmetros de autenticação, selecione Permitir encaminhamento de agente.
  9. Clique em Abrir para se conectar à VM do Bastion Host.
  10. Na VM do Bastion Host, conecte-se pelo endereço IP interno de uma VM usando o seguinte comando:

    ssh USERNAME@INTERNAL_IP

    Substitua:

    • USERNAME: seu nome de usuário Se você gerencia suas chaves SSH em metadados, o nome de usuário será aquele que você especificou quando criou a chave SSH. Para contas do Login do SO, o nome de usuário é definido no seu perfil do Google. Por exemplo, cloudysanfrancisco_example_com ou cloudysanfrancisco.
    • INTERNAL_IP: o endereço IP interno da VM.

Solução de problemas

Para encontrar métodos de diagnóstico e resolução de conexões SSH com falha, consulte Solução de problemas de SSH.

A seguir