Por que estou recebendo um erro “O servidor recusou nossa chave» quando tento me conectar à minha instância do EC2 usando SSH?

8 minuto de leitura
0

Estou recebendo o erro “O servidor recusou nossa chave” ao me conectar à minha instância do Amazon Elastic Compute Cloud (Amazon EC2) usando SSH.

Breve descrição

Há vários motivos pelos quais um servidor SSH (sshd) recusa uma chave SSH privada. A seguir estão alguns motivos comuns pelos quais você pode receber esse erro:

Resolução

Você está usando o nome de usuário incorreto para sua AMI ao se conectar à sua instância do EC2

Para obter uma lista de nomes de usuário válidos, consulte Erro: O servidor recursou nossa chave ou Não há métodos de autenticação compatíveis.

O usuário que estava tentando acessar a instância foi excluído do servidor, ou a conta foi bloqueada

Se o usuário que está tentando acessar a instância foi excluído do servidor, adicione-o novamente como um novo usuário. Para mais informações, consulte Como adiciono novas contas de usuário com acesso do SSH a instâncias do Amazon EC2 do Linux?

Há problemas de permissão na instância, ou você não tem um diretório

Há quatro métodos para verificar permissões e diretórios na instância:

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

Se você ativou o Console de Série do EC2 para Linux, poderá usar o console serial para solucionar problemas de tipos de instâncias compatíveis com base 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. O console serial se conecta à sua instância sem a necessidade de uma conexão de rede ativa. 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 serial, você deve conceder acesso a ele no nível da conta. Em seguida, você deve criar políticas do AWS Identity and Access Management (IAM) concedendo 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 a sua instância estiver inacessível e você não tiver configurado o acesso ao console de série, siga as instruções no Método 2, 3 ou 4. Para 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.

Método 2: Usar o Gerenciador de Sessões do AWS Systems Manager para fazer login na instância e verificar as permissões

Observação: A instalação do SSM Agent é necessária para usar esse método. Para mais informações sobre o Session Manager e uma lista completa de pré-requisitos, consulte Configurar o Session Manager.

1.Abra o console do AWS Systems Manager.

2.    Inicie uma sessão.

3.    Use o comando stat para garantir que as permissões dos arquivos no diretório home estejam corretas. Veja a seguir uma lista das permissões corretas:

  • O diretório inicial do Linux, /home, por exemplo, deve ser (0755/drwxr-xr-x).
  • O diretório inicial do usuário, /home/ec2-user/, por exemplo, deve ser (0700/drwx------).
  • A permissão de diretório .ssh, /home/ec2-user/.ssh, por exemplo, deve ser ** (0700/drwx------)**.
  • permissão de arquivo authorized_keys, /home/ec2-user/.ssh/authorized_keys, por exemplo, deve ser (0600/-rw-------).

Veja a seguir um exemplo do comando stat e da saída resultante. Neste exemplo, ec2-user é o nome do usuário. Altere o nome de usuário de acordo com sua AMI específica:

$ stat /home/ec2-user/
  File: '/home/ec2-user/'
  Size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 10301h/66305d	Inode: 18322       Links: 3
Access: (0700/drwx------)  Uid: (  500/ec2-user)   Gid: (  500/ec2-user)

4.Se as permissões não corresponderem aos valores anteriores, execute os seguintes comandos:

$ sudo chown root:root /home
$ sudo chmod 755 /home
$ sudo chown ec2-user:ec2-user /home/ec2-user -R
$ sudo chmod 700 /home/ec2-user /home/ec2-user/.ssh
$ sudo chmod 600 /home/ec2-user/.ssh/authorized_keys

5.Encerre a sessão.

6.SSH para sua instância.

Método 3: Corrija automaticamente os problemas que causam o erro executando o documento AWSSupport-TroubleshootSSH document

O documento de automação AWSSupport-TroubleshootSSH instala a ferramenta Amazon EC2Rescue na instância e, em seguida, verifica e corrige alguns problemas que causam erros de conexão remota ao se conectar a uma máquina Linux por meio de SSH. Para obter mais informações, consulte Estou recebendo erros ao tentar me conectar à minha instância do EC2 usando SSH. Como posso usar o fluxo de trabalho de automação AWSSupport-TroubleshootSSH para solucionar problemas de conexão SSH?

Método 4: Usar dados do usuário para corrigir permissões na instância

Importante:

  • Esse procedimento de recuperação exige que você pare e inicie sua instância. Quando você faz isso, os dados nos volumes de armazenamento de instâncias são perdidos. Para mais informações, consulte Determinar o tipo de dispositivo raiz da sua instância.
  • Se a sua instância fizer parte de um grupo do Auto Scaling do Amazon EC2, a instância poderá ser encerrada quando for interrompida. Isso também pode ocorrer em instâncias lançadas por serviços que usam o AWS Auto Scaling, como o Amazon EMR, o AWS CloudFormation, o AWS Elastic Beanstalk e assim por diante. O encerramento da instância nesse cenário depende das configurações de proteção contra redução de horizontal de escala 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.
  • Interromper e reiniciar a instância altera o endereço IP público da sua instância. É uma prática recomendada usar um endereço IP elástico em vez de um endereço IP público ao rotear o tráfego externo para sua instância.
  • Você não pode alterar a chave SSH usando dados do usuário se o dispositivo raiz da instância for um volume de armazenamento de instâncias. Para mais informações, consulte Determinar o tipo de dispositivo raiz da sua instância.
  • A atualização dos dados de usuário da sua instância se aplica a todas as distribuições que oferecem suporte às diretivas cloud-init. O Cloud-init deve ser instalado e configurado para que essas instruções sejam bem-sucedidas. Para mais informações sobre o módulo SSH cloud-init, consulte SSH - Configurar chaves SSH na documentação do Cloud-init.

1.Abra o console do Amazon EC2 e selecione sua instância.

2.Escolha Estado da instância e depois Parar instância.

Observação: se a opção Parar não estiver disponível, significa que a instância já está parada ou seu dispositivo raiz é um volume de armazenamento de instâncias.

3.Escolha Ações, escolha Configurações da instância e escolha Editar dados do usuário.

4.Copie o script a seguir no campo Dados do usuário e selecione Salvar. Certifique-se de copiar todo o script e não adicionar espaços extras.

Observação: o script a seguir usa o nome de usuário ec2-user. Altere ec2-user para o nome de usuário da sua AMI.

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:
- [scripts-user, always]

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

#!/bin/bash
chown root:root /home
chmod 755 /home
chown ec2-user:ec2-user /home/ec2-user -R
chmod 700 /home/ec2-user /home/ec2-user/.ssh
chmod 600 /home/ec2-user/.ssh/authorized_keys
--//

5.Inicie a instância e, em seguida, faça SSH nela.

Observação: por padrão, o script de dados do usuário é executado uma vez por instância. Esse procedimento altera o comportamento padrão para adicionar a chave pública a cada reinicialização, parada ou início da instância. Para restaurar o comportamento padrão, remova os dados personalizados do usuário. Como prática recomendada, considere as implicações de segurança de permitir que os dados do usuário sejam executados após a primeira inicialização de uma instância. Você pode modificar os dados do usuário de uma instância com o método da API ModifyInstanceAttribute. Para restringir o acesso a esse método, use políticas do IAM.

Informações relacionadas

Conectar-se à sua instância Linux a partir do Windows usando PuTTY

Pares de chaves do Amazon EC2 e instâncias do Windows

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

AWS OFICIAL
AWS OFICIALAtualizada há um ano