Conectar-se a VMs do Linux usando um Bastion Host

Neste documento, descrevemos como se conectar a uma instância de máquina virtual (VM) pelo 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 externo e não puder usar um Bastion Host, analise os outros métodos listados em Escolher uma opção de conexão para VMs somente internas.

Sistemas operacionais compatíveis

O Compute Engine é compatível com esses métodos de conexão para todas as imagens públicas do Linux. Para imagens do 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 VPC de destino para atuar como um Bastion Host.

Console

Para criar uma VM do Bastion Host, faça o seguinte:

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

    Acesse "Criar uma instância"

  2. 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.

  3. 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.

  4. 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 BASTION_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET
    

    Substitua:

    • BASTION_NAME: o nome da VM do Bastion Host.
    • ZONE: a zona da VM do Bastion Host.
    • IMAGE_FAMILY: uma família de imagem do Linux.
    • IMAGE_PROJECT: o projeto de imagem que contém a imagem.
    • SUBNET: a mesma sub-rede VPC que a VM de destino. Se você usar a rede VPC padrão, defina SUBNET como 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 por meio de um Bastion Host usando SSH e executando o comando gcloud compute ssh:

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

    gcloud compute ssh BASTION_NAME \
        --project=PROJECT_ID \
        --zone=ZONE

    Substitua:

    • BASTION_NAME: o nome da VM do Bastion Host.
    • PROJECT_ID: o ID do projeto que contém a VM do Bastion Host.
    • ZONE: o nome da zona em que a VM do Bastion Host está localizada.
  2. Na VM do Bastion Host, conecte-se à VM de destino pelo endereço IP interno usando a flag --internal-ip:

    gcloud compute ssh INSTANCE_NAME \
        --zone=TARGET_ZONE \
        --internal-ip

    Substitua:

    • INSTANCE_NAME: o nome da VM a que você quer se conectar.
    • TARGET_ZONE: o nome da zona em que a VM de destino está localizada.

Cliente OpenSSH

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

  1. Se você ainda não adicionou uma chave SSH, adicione uma à VM de Bastion Host e à VM de destino.
  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 e o endereço IP interno da VM a que você quer se conectar.

    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, como ~/.ssh/my-ssh-key ou ~/.ssh/google_compute_engine se a Google Cloud CLI tiver gerado a chave.
    • 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, como cloudysanfrancisco_example_com ou cloudysanfrancisco.
    • EXTERNAL_IP: o endereço IP externo da VM do Bastion Host.
  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, como 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 o PuTTY, faça o seguinte:

  1. Se você ainda não adicionou uma chave SSH, adicione uma à VM de Bastion Host e à VM de destino.
  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 externo da VM do Bastion Host e 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 Nome do host (ou endereço IP), insira o nome de usuário associado à chave SSH e o endereço IP externo da VM do Bastion Host. 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, como cloudysanfrancisco_example_com ou cloudysanfrancisco.
    • EXTERNAL_IP: o endereço IP externo da VM do Bastion Host.
  6. No menu Categoria, acesse Conexão > SSH > Autenticação > Credenciais (ou Conexão > SSH > Autenticação em versões do PuTTY anteriores à 0.78).
  7. No campo Arquivo de chave privada para autenticação, clique em Procurar e selecione o arquivo de chave SSH privada (.ppk) que corresponde à chave pública que você adicionou à VM.
  8. No menu Categoria, acesse Conexão > SSH > Auth e, 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, como 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