Como uso o SSH para acessar minha instância do EC2 depois de alterar o arquivo sshd_config da instância?

6 minuto de leitura
0

Mudei o arquivo sshd_config da minha instância do Amazon Elastic Compute Cloud (Amazon EC2) e agora não consigo acessar minha instância usando SSH.

Breve descrição

Alterar o arquivo sshd_config de uma instância pode causar um erro de recusa de conexão ao se conectar via SSH.

Para confirmar que você não pode acessar a instância devido a um erro de conexão recusada, acesse a instância por meio de SSH com mensagens detalhadas ativadas. Veja o seguinte exemplo:

$ ssh -i "myawskey.pem" ec2-user@ec2-11-22-33-44.eu-west-1.compute.amazonaws.com -vvv

Este exemplo conecta-se ao nome DNS e usa myawskey.pem para o arquivo de chave privada, com ec2-user como nome de usuário. Substitua seu arquivo de chave e nome de usuário pelo arquivo de chave e nome de usuário do exemplo.

O exemplo de saída a seguir mostra a mensagem de erro de conexão recusada:

OpenSSH_7.9p1, LibreSSL 2.7.3
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Connecting to ec2-11-22-33-44.eu-west-1.compute.amazonaws.com port 22.
ssh: connect to host ec2-11-22-33-44.eu-west-1.compute.amazonaws.com port 22: Connection refused

Resolução

Observação: se você estiver usando uma instância baseada em Nitro, os nomes dos dispositivos serão diferentes dos exemplos fornecidos nas etapas a seguir. Por exemplo, em vez de /dev/xvda ou /dev/sda1, o nome do dispositivo em uma instância baseada em Nitro será /dev/nvme. Para obter mais informações, consulte Nomes de dispositivos em instâncias Linux.

Método 1: Use o Console de Série do EC2

Se você ativou o Console de Série do EC2 para Linux, poderá usá-lo para solucionar problemas de tipos de instância baseados em Nitro compatíveis. O Console de Série serial ajuda você a solucionar problemas de inicialização, configuração de rede e problemas de configuração SSH. O Console de Série se conecta à sua instância sem a necessidade de uma conexão de rede ativa. Use o console Amazon EC2 ou a AWS Command Line Interface (AWS CLI) para acessar o Console de Série.

Antes de usar o Console de Série, conceda acesso ao console no nível da conta. Em seguida, crie políticas do AWS Identity and Access Management (IAM) que concedam acesso aos seus usuários do IAM. Além disso, todas as instâncias que usam o Console de Série devem incluir pelo menos um usuário baseado em senha. Se sua instância estiver inacessível e você não tiver configurado o acesso ao Console de Série, siga as instruções na seção Método 2: Usar uma instância de resgate. Para obter informações sobre como configurar o Console de Série do EC2 para Linux, consulte Configurar o acesso ao Console de Série do EC2.

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

Método 2: Usar uma instância de resgate

Aviso:

  • Se sua instância for apoiada pelo armazenamento de instâncias ou tiver volumes de armazenamento de instâncias que contenham dados, os dados serão perdidos quando você interromper a instância. Para obter mais informações, consulte Determinar o tipo de dispositivo raiz da sua instância.
  • Se a instância fizer parte de um grupo do Amazon EC2 Auto Scaling, sua interrupção poderá encerrar a instância. As instâncias executadas com o Amazon EMR, o AWS CloudFormation ou o AWS Elastic Beanstalk podem fazer parte de um grupo do AWS Auto Scaling. O encerramento da instância nesse cenário depende das configurações de proteção contra redução da escala horizontal da instância para seu grupo do Auto Scaling. Se sua instância fizer parte de um grupo do Auto Scaling, remova temporariamente a instância do grupo do Auto Scaling antes de iniciar as etapas de resolução.
  • O ato de interromper e iniciar a instância altera seu endereço IP público. Se você não quiser que seu endereço IP público do EC2 mude ao reiniciar ou encerrar sua instância, use um endereço IP elástico. Se você usa o Amazon Route 53, talvez seja necessário atualizar os registros DNS do Route 53 quando o IP público mudar.

1.Inicie uma nova instância do EC2 na sua nuvem privada virtual (VPC). Use a mesma Amazon Machine Image (AMI) na mesma zona de disponibilidade da instância danificada. A nova instância se torna sua instância de resgate.

2.Pare a instância danificada.

3.Separe o volume raiz do Amazon Elastic Block Store (Amazon EBS) (/dev/xvda ou /dev/sda1) da sua instância danificada.

4.Conecte o volume do EBS como um dispositivo secundário (/dev/sdf) à instância de resgate.

5.Use o SSH para se conectar à sua instância de resgate.

6.Execute o comando lsblk para visualizar os dispositivos:

$ 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   8G  0 disk
 └─xvdf1 202:81   0   8G  0 part

7.Crie um diretório de pontos de (/rescue) para o novo volume que você anexou à instância de resgate na etapa 4:

$ sudo mkdir /mnt/rescue

8.Monte o volume no diretório que você criou na etapa 7:

$ sudo mount -t xfs -o nouuid /dev/xvdf1 /mnt/rescue/

Para montar sistemas de arquivos ext3 e ext4, execute o seguinte comando:

$ sudo mount /dev/xvdf1 /mnt/rescue

Observação: A sintaxe do comando mount anterior pode variar. Para obter mais informações, execute o comando man mount.

9.Execute o comando lsblk novamente para verificar se o volume montou o diretório:

$ 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   8G  0 disk
└─xvdf1 202:81   0   8G  0 part /mnt/rescue

Corrigir ou copiar o arquivo sshd_config

Você pode investigar o arquivo sshd_config na sua instância danificada e, se necessário, reverter suas alterações. Use a saída de mensagens de verbosidade do SSH para ir até o local do erro no arquivo:

$ sudo vi /mnt/rescue/etc/ssh/sshd_config

Ou execute o comando a seguir para copiar o arquivo sshd_config da instância de resgate para sua instância danificada. Esse comando substitui o conteúdo do arquivo sshd_config em sua instância original:

$ sudo cp /etc/ssh/sshd_config /mnt/rescue/etc/ssh/sshd_config

Reconectar o volume à instância original e testar a conexão

Observação: se você usou o Método 2: Usar uma instância de resgate, conclua as etapas a seguir.

1.Execute o comando umount para desmontar o volume:

$ sudo umount /mnt/rescue/

2.Separe o volume secundário da instância de recuperação e, em seguida, anexe o volume à instância original como /dev/xvda (volume raiz).

3.Inicie a instância.

4.Conecte-se à instância usando SSH para verificar se você pode acessar a instância.

Informações relacionadas

Por que não consigo me conectar à minha instância Linux do Amazon EC2 usando SSH?

AWS OFICIAL
AWS OFICIALAtualizada há um ano