Conectar-se à instância do Linux em caso de perda da chave privada - Amazon Elastic Compute Cloud

Conectar-se à instância do Linux em caso de perda da chave privada

Se você perder a chave privada de uma instância com EBS, poderá recobrar o acesso à sua instância. É necessário parar a instância, separar seu volume raiz e associá-lo a outra instância como um volume de dados, modificar o arquivo authorized_keys com uma nova chave pública, mover o volume de volta para a instância original e reiniciar a instância. Para obter mais informações sobre executar, conectar e parar instâncias, consulte Ciclo de vida da instância.

Este procedimento não é suportado para instâncias com volumes raiz com backup de armazenamento de instância. Para determinar o tipo de dispositivo raiz da sua instância, abra o console do Amazon EC2, escolha Instâncias, selecione a instância e verifique o valor de Tipo de dispositivo raiz no painel de detalhes. O valor é ebs ou instance store. Se o dispositivo raiz for um volume de armazenamento de instâncias, você não poderá usar esse procedimento para recuperar o acesso à instância. É necessário ter a chave privada para se conectar à instância.

Etapa 1: Criar um novo par de chaves

Crie um novo par de chaves usando o console do Amazon EC2 ou uma ferramenta de terceiros. Se você quiser nomear seu novo par de chaves exatamente igual ao par de chaves privadas perdido, primeiro exclua o par de chaves existente. Para obter mais informações sobre como criar um par de chaves, consulte Opção 1: criar um par de chaves usando o Amazon EC2 ou Opção 2: importar sua própria chave pública para o Amazon EC2.

Etapa 2: Obter informações sobre a instância original e seu volume raiz

Anote as seguintes informações, porque elas serão necessárias para a conclusão deste procedimento.

New console

Como obter informações sobre a instância original

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Escolha Instâncias no painel de navegação e selecione a instância à qual você deseja se conectar. (Nós a chamamos de instância original.)

  3. Na guia Details (Detalhes) , anote o ID da instância e a ID da AMI.

  4. Na guia Networking (Redes), anote a zona de disponibilidade.

  5. Na guia Storage (Armazenamento), em Root device name (Nome do dispositivo raiz), anote o nome do dispositivo para o volume raiz (por exemplo, /dev/xvda). Em seguida, em Block devices (Dispositivos de bloco), encontre este nome do dispositivo e anote o ID do volume (por exemplo, vol-0a1234b5678c910de).

Old console

Como obter informações sobre a instância original

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Escolha Instâncias no painel de navegação e selecione a instância à qual você deseja se conectar. (Nós a chamamos de instância original.)

  3. Na guia Description (Descrição), salve as informações necessárias para concluir este procedimento.

    • Anote o ID da instância, o ID da AMI e a zona de disponibilidade da instância original.

    • No campo Dispositivo raiz, anote o nome do dispositivo para o volume do dispositivo raiz (por exemplo, /dev/sda1 ou /dev/xvda). Escolha o link e anote o ID de volume no campo ID do EBS (vol-xxxxxxxxxxxxxxxxx).

Etapa 3: Interromper a instância original

Escolha Instance state (Estado da instância) e Stop instance (Interromper instância). Se essa opção estiver desabilitada, a instância já foi interrompida ou o dispositivo raiz é um volume de armazenamento de instâncias.

Atenção

Quando você interrompe uma instância, os dados em todos os volumes de armazenamento de instâncias são apagados. Para manter dados longe dos volumes de armazenamento de instância, faça backup no armazenamento persistente.

Etapa 4: Executar uma instância temporária

Escolha Launch Instance (Executar instância) e use o assistente de execução para executar uma instância temporária com as seguintes opções:

  • Na página Escolha uma AMI, selecione a mesma AMI usada para executar a instância original. Se essa AMI estiver indisponível, você poderá criar uma AMI que pode usar a partir da instância interrompida. Para obter mais informações, consulte Criar uma AMI do Linux baseada em Amazon EBS .

  • Na página Escolher um tipo de instância, deixe o tipo de instância padrão que o assistente seleciona para você.

  • Na página Configure Instance Details (Configurar detalhes da instância) especifique a mesma zona de disponibilidade que a instância original. Se você estiver executando uma instância em uma VPC, selecione uma sub-rede nesta zona de disponibilidade.

  • Na página Adicionar tags, adicione a tag Name=Temporary à instância para indicar que isso é uma instância temporária.

  • Na página Revisar, escolha Iniciar. Escolha o par de chaves criado na Etapa 1 e selecione Launch Instances (Executar instâncias).

Etapa 5: Separar o volume raiz da instância original e associá-lo à instância temporária

  1. No painel de navegação, selecione Volumes e selecione o volume do dispositivo raiz da instância original (você anotou o ID do volume em uma etapa anterior). Escolha Actions (Ações), Detach Volume (Desanexar volume) e Yes, Detach (Sim, desanexar). Espere o estado do volume tornar-se available. (Você pode precisar escolher o ícone Atualizar.)

  2. Com o volume ainda selecionado, escolha Ações e, em seguida, Associar volume. Selecione o ID da instância temporária, anote o nome do dispositivo especificado em Device (Dispositivo) (por exemplo, /dev/sdf) e selecione Attach (Anexar).

    nota

    Se você tiver executado a instância original a partir de uma AMI de AWS Marketplace e seu volume contiver códigos de AWS Marketplace , você deverá primeiro parar a instância temporária antes de associar o volume.

Etapa 6: Adicionar a nova chave pública authorized_keys no volume original montado à instância temporária

  1. Conecte-se à instância temporária.

  2. Na instância temporária, monte o volume que você associou à instância de forma que possa acessar seu sistema de arquivos. Por exemplo, se o nome do dispositivo for /dev/sdf, use os comandos a seguir para montar o volume como /mnt/tempvol.

    nota

    O nome de dispositivo pode aparecer de forma diferente em sua instância. Por exemplo, dispositivos montados como /dev/sdf podem ser exibidos como /dev/xvdf na instância. Algumas versões do Red Hat (ou suas variantes, como o CentOS) podem até mesmo incrementar a letra final com 4 caracteres, em que /dev/sdf torna-se /dev/xvdk.

    1. Use o comando lsblk determinar se o volume é particionado.

      [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 101G 0 disk └─xvdf1 202:81 0 101G 0 part xvdg 202:96 0 30G 0 disk

      No exemplo acima, /dev/xvda e /dev/xvdf são volumes particionados, e /dev/xvdg não é. Se seu volume estiver particionado, você montará a partição (/dev/xvdf1) em vez do dispositivo raw (/dev/xvdf) nas próximas etapas.

    2. Crie um diretório temporário para montar o volume.

      [ec2-user ~]$ sudo mkdir /mnt/tempvol
    3. Monte o volume (ou a partição) no ponto de montagem temporário usando o nome do volume ou do dispositivo identificado anteriormente. O comando necessário depende do sistema de arquivos do sistema operacional.

      • Amazon Linux, Ubuntu e Debian

        [ec2-user ~]$ sudo mount /dev/xvdf1 /mnt/tempvol
      • Amazon Linux 2, CentOS, SUSE Linux 12 e RHEL 7.x

        [ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol
    nota

    Se você receber um erro informando que o sistema de arquivos está corrompido, execute o seguinte comando para usar o utilitário fsck para verificar o sistema de arquivos e reparar quaisquer problemas:

    [ec2-user ~]$ sudo fsck /dev/xvdf1
  3. Pela instância temporária, use o comando a seguir para atualizar authorized_keys no volume montado com a nova chave pública nova de authorized_keys para a instância temporária.

    Importante

    Os exemplos a seguir usam o nome de usuário do Amazon Linux ec2-user. Você pode precisar substituir um nome de usuário diferente, como ubuntu para instâncias Ubuntu.

    [ec2-user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Se essa cópia tiver sido bem-sucedida, você poderá passar para a próxima etapa.

    (Opcional) Caso contrário, se você não tiver permissão para editar arquivos em /mnt/tempvol, será necessário atualizar o arquivo usando sudo e conferir as permissões no arquivo para verificar se você pode fazer login na instância original. Use o comando a seguir para verificar as permissões no arquivo:

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh total 4 -rw------- 1 222 500 398 Sep 13 22:54 authorized_keys

    Nesta saída de exemplo, 222 é o ID do usuário e 500 é o ID do grupo. Em seguida, use sudo para executar novamente o comando de cópia que falhou.

    [ec2-user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Execute o comando a seguir novamente para determinar se as permissões foram alteradas.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh

    Se o ID do usuário e do grupo tiverem sido alterados, use o comando a seguir para restaurá-los.

    [ec2-user ~]$ sudo chown 222:500 /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

Etapa 7: Desmontar e separar o volume original da instância temporária e associá-lo novamente à instância original

  1. Na instância temporária, desmonte o volume que você associou para que possa reassociá-lo à instância original. Por exemplo, use o comando a seguir para desmontar o volume em /mnt/tempvol.

    [ec2-user ~]$ sudo umount /mnt/tempvol
  2. Desassocie o volume da instância temporária (você o desmontou na etapa anterior): no console do Amazon EC2, selecione o volume do dispositivo raiz da instância original (você anotou o ID do volume em uma etapa anterior), escolha Actions (Ações), Detach Volume (Desassociar volume) e, depois, selecione Yes, Detach (Sim, desassociar). Espere o estado do volume tornar-se available. (Você pode precisar escolher o ícone Atualizar.)

  3. Associe o volume novamente à instância original: com o volume ainda selecionado, escolha Actions (Ações), Attach Volume (Associar volume). Selecione o ID da instância original, especifique o nome do dispositivo anotado anteriormente na Etapa 2 para o anexo do dispositivo raiz original (/dev/sda1 ou /dev/xvda) e selecione Anexar.

    Importante

    Se você não especificar o mesmo nome do dispositivo do anexo original, não poderá iniciar a instância original. O Amazon EC2 espera que o volume raiz seja sda1 ou /dev/xvda.

Etapa 8: Conectar-se à instância original usando o novo par de chaves

Selecione a instância original e escolha Instance state (Estado da instância) e Start instance (Iniciar instância). Após a instância entrar no estado running, você pode se conectar a ela usando o arquivo de chave privada do seu novo par de chaves.

nota

Se o nome do novo par de chaves e do arquivo de chaves privadas correspondente for diferente do nome do par de chaves original, especifique o nome do novo arquivo de chave privada conectado à sua instância.

Etapa 9: Limpeza

(Opcional) Você pode encerrar a instância temporária se não tiver utilização adicional para ela. Selecione a instância temporária e escolha Instance state (Estado da instância) e Terminate instance (Encerrar instância).