Como me conecto a uma instância do Amazon EC2 se perdi o par de chaves SSH na primeira execução?

5 minuto de leitura
0

Quero me conectar a uma instância do Amazon Elastic Compute Cloud (Amazon EC2), mas perdi o par de chaves SSH.

Resolução

Importante:

Os métodos 1, 2 e 3 exigem que a instância seja interrompida e depois iniciada. Esteja ciente de que:

  • Caso a instância conte com armazenamento de instância ou se tiver volumes de armazenamento de instância com dados armazenados, os dados serão perdidos ao interrompê-la. Para mais informações, consulte Determinar o tipo de dispositivo raiz da instância. Faça backup de todos os dados que você deseja manter no volume de armazenamento da instância.
  • O processo de interromper e reiniciar a instância altera o endereço IP público dela. Recomenda-se usar um endereço IP elástico em vez de um endereço IP público ao direcionar tráfego externo para a instância.

Método 1: inserir os dados do usuário

1.    Crie outro par de chaves.

2.    Se você criou a chave privada pelo console do Amazon EC2, recupere a chave pública do par de chaves.

3.    Abra o console do Amazon EC2.

4.    Interrompa a instância.

5.    Escolha Ações, Configurações de instância e, por último, Editar dados do usuário.

6.    Cole o script a seguir na caixa de diálogo em Editar dados do usuário:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
  - name: username
    ssh-authorized-keys:
    - PublicKeypair

Substitua username pelo seu nome de usuário, como ec2-user. Você pode inserir o nome de usuário padrão ou um nome de usuário personalizado, caso já tenha configurado um usuário para a instância anteriormente. Se quiser ver uma lista com os nomes de usuário padrão, consulte Obter informações sobre a instância.

Substitua PublicKeypair pela chave pública recuperada na etapa 2. Insira a chave pública completa, começando com ssh-rsa.

7.    Escolha Salvar.

8.    Inicie a instância.

9.    Após a conclusão da fase do cloud-init, confira se a chave pública foi substituída.

Importante: como o script contém um par de chaves, remova‑o do campo Dados do usuário.

10.    Interrompa a instância.

11.    Escolha Ações, Configurações de instância e, por último, Editar dados do usuário.

12.    Exclua todo o texto da caixa de diálogo em Editar dados do usuário e escolha Salvar.

13.    Inicie a instância.

Método 2: usar o AWS Systems Manager

Se a instância for uma instância gerenciada no AWS Systems Manager, use o documento AWSSupport-ResetAccess para recuperar o par de chaves perdido. O AWSSupportResetAccess usa a ferramenta EC2 Rescue para Linux para gerar um novo par de chaves SSH (pública/privada) e adicioná-la à instância do EC2 que você especificou, de maneira automática.

A nova chave SSH privada é criptografada e salva no Parameter Store, um recurso do AWS Systems Manager. O nome do parâmetro é /ec2rl/openssh/instance_id/key.

Use o comando a seguir para recuperar a chave SSH privada do Parameter Store:

$ aws ssm get-parameters --names "/ec2rl/openssh/instance_id/key" --with-decryption --output json --query  "Parameters[0].Value" | sed 's:\\n:\n:g; s:^"::; s:"$::' >  key-pair-name

Observação: substitua instance_id pelo ID da instância e key-pair-name pelo nome do par de chaves.

Em seguida, crie um arquivo .pem e salve o valor do parâmetro nele. Use o arquivo para reconectar‑se à instância. Use o comando a seguir para converter a chave privada em um arquivo .pem:

$ ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem

Observação: substitua key-pair-name pelo nome do par de chaves.

O fluxo de trabalho de automação cria uma imagem de máquina da Amazon (AMI) com senha como backup. A nova AMI fica na sua conta e não é excluída automaticamente.

Para localizar essas AMIs:

1.    Abra o console do Amazon EC2 e escolha AMIs.

2.    Insira o ID da execução de automação na barra de pesquisa.

Método 3: usar o Amazon EC2 Instance Connect

Você pode usar EC2 Instance Connect para se conectar à instância caso ela seja Amazon Linux 2 2.0.20190618 ou uma versão posterior, como o Amazon Linux 2023.

Método 4: usar o Console de Série do EC2

Se você ativou o Console de Série do EC2 no Linux, poderá usá-lo para solucionar problemas nas instâncias compatíveis, baseadas em Nitro. O console de série serial ajuda você a solucionar problemas de inicialização, configuração de rede e problemas de configuração SSH. Ele se conecta à instância sem precisar que haja uma conexão de rede em funcionamento. Você pode acessar o Console de Série usando o console do Amazon EC2 ou a AWS Command Line Interface (AWS CLI).

Antes de usar o Console, conceda acesso a ele a nível de conta. Depois, crie políticas do AWS Identity and Access Management (IAM) que concedam acesso aos usuários. Além disso, toda instância que usa o Console de Série deve incluir pelo menos um usuário com senha. Se você não consegue acessar uma instância e não configurou o acesso ao Console de Série, siga as instruções do método 1, 2 ou 3. Para aprender a configurar o Console de Série do EC2 no Linux, consulte Configurar o acesso ao Console de Série do EC2.

Observação: se você receber erros ao executar os comandos da AWS CLI, verifique se está usando a versão mais recente.

Informações relacionadas

Executar comandos na instância do Linux no lançamento

AWS Systems Manager Automation

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos