Por que recebo a mensagem de erro “Server refused our key” quando tento me conectar à minha instância do EC2 por meio de SSH?

7 minuto de leitura
0

Eu recebo o erro “O servidor recusou nossa chave” quando me conecto à minha instância do Amazon Elastic Compute Cloud (Amazon EC2) por meio de SSH.

Resolução

O servidor SSH (sshd) pode recusar uma chave SSH privada por um dos seguintes motivos:

Você também poderá receber a mensagem de erro Server recused our key se sua instância tiver problemas de permissão ou não tiver um diretório. Para verificar as permissões e os diretórios da sua instância, use um dos métodos a seguir.

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.

Use o Systems Manager para fazer login na instância e verificar as permissões

Pré-requisito: Instale o AWS Systems Manager Agent (SSM Agent). Além disso, certifique-se de que sua configuração atenda aos pré-requisitos do Gerenciador de Sessões, um recurso do AWS Systems Manager.

Para usar o Gerenciador de Sessões para solucionar problemas da sua instância, conclua as seguintes etapas:

  1. Abra o console do Systems Manager.

  2. Inicie uma sessão.

  3. Para garantir que os arquivos no diretório inicial tenham as permissões corretas, execute o seguinte comando:

    stat /home/ec2-user/  
    ls -ld /home               # Should show drwxr-xr-x (755)
    ls -ld /home/ec2-user      # Should show drwx------ (700)
    ls -ld /home/ec2-user/.ssh # Should show drwx------ (700)
    ls -l /home/ec2-user/.ssh/authorized_keys # Should show -rw------- (600)     

    Observação: substitua ec2-user pelo nome de usuário correto para sua AMI.
    Na saída, verifique o Acesso para garantir que sua configuração use as seguintes permissões:
    O diretório inicial do Linux /home deve ter permissões 0755/drwxr-xr-x.
    O diretório inicial do usuário /home/ec2-user/ deve ter permissões 0700/drwx------.
    A permissão do diretório /home/ec2-user/.ssh .ssh deve ter permissões 0700/drwx------.
    A permissão de arquivo /home/ec2-user/.ssh/authorized_keys deve ter permissões 0600/-rw-------.
    Exemplo de saída:

    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. Para atualizar as permissões da sua configuração, 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

    Observação: substitua ec2-user pelo nome de usuário correto para sua AMI.

  5. Encerre a sessão.

  6. Use SSH para conectar-se à sua instância.

Execute o runbook AWSSupport-TroubleshootSSH

Para corrigir automaticamente os problemas que causam erros, execute AWSSupport-TroubleshootSSH. O runbook instala a ferramenta Amazon EC2Rescue na instância e, em seguida, identifica e corrige problemas que causam erros de conexão remota durante o 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?

Usar dados do usuário para corrigir permissões na instância

Importante: antes de interromper e executar sua instância, execute as seguintes ações:

Observação: quando você interrompe ou executa uma instância, o endereço IP público da instância muda. Ao rotear tráfego externo para sua instância, é uma prática recomendada usar um endereço IP elástico em vez de um endereço IP público. Se você usa o Amazon Route 53, talvez seja necessário atualizar os registros DNS do Route 53 quando o endereço IP público mudar.

Para usar os dados do usuário para corrigir problemas de permissões, conclua as seguintes etapas:

  1. Abra o console do Amazon EC2.

  2. No painel de navegação, escolha Instâncias e, em seguida, selecione sua instância.

  3. Escolha Estado da instância e depois Interromper instância.
    Observação: se você não conseguir escolher Interromper instância, a instância já está interrompida ou seu dispositivo raiz é um volume de armazenamento de instâncias.

  4. Escolha Ações e, em seguida, escolha Configurações da instância.

  5. Escolha Editar dados do usuário e, em seguida, digite o seguinte comando:

    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
    --//

    Observação: substitua ec2-user pelo nome de usuário correto para sua AMI. Não adicione espaços extras ao inserir o comando anterior.

  6. Escolha Salvar.

  7. Execute a instância e, em seguida, use SSH para conectar-se à instância.

Por padrão, o comando de dados do usuário é executado uma vez para cada instância. As etapas anteriores alteram o comportamento padrão para adicionar a chave pública em cada reinicialização, interrupção ou inicialização da instância. Para restaurar o comportamento padrão, remova os comandos personalizados de dados do usuário. É uma prática recomendada permitir que os dados do usuário sejam executados após a primeira inicialização da instância. É possível usar a API ModifyInstanceAttribute para modificar os dados do usuário de uma instância. Para restringir o acesso à API ModifyInstanceAttribute, use as políticas do AWS Identity and Access Management (AWS IAM).

Informações relacionadas

Conecte-se à sua instância Linux usando PuTTY

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

Como posso solucionar problemas de conexão com minha instância Linux do Amazon EC2 usando SSH?

Por que recebo o erro “Server refused our key” quando tento me conectar à minha instância do EC2 por meio de SSH?