Por que estou recebendo um erro "Server refused our key" (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 "Server refused our key” (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 exigir 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 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:

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

2.    Escolha Instance State (Estado da instância) e , em seguida, escolha Stop instance (Parar instância).

**Observação:**se a opção Stop (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 Actions (Ações), escolha Instance Settings (Configurações da instância) e escolha Edit User Data (Editar dados do usuário)..

4.    Copie o script a seguir no campo User Data (Dados do usuário) e selecione Save (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