¿Por qué recibo el error «Server refused our key» cuando intento conectarme a mi instancia de EC2 mediante SSH?

7 minutos de lectura
0

Recibo el error «Server refused our key» cuando me conecto a mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) mediante SSH.

Breve descripción

Un servidor SSH (sshd) puede rechazar una clave SSH privada por varios motivos. A continuación, se explican algunos de los motivos más habituales por los que recibes este error:

Resolución

Utilizas un nombre de usuario incorrecto para tu AMI cuando intentas conectarte a tu instancia de Amazon EC2

Los nombres de usuario habituales son «ec2-user», «ubuntu», «centos», «root» o «admin». Para obtener una lista de nombres de usuario válidos, consulta Error: Server refused our key o No supported authentication methods available.

El usuario se eliminó del servidor o se bloqueó la cuenta de AWS

Si el usuario que intenta acceder a la instancia se ha eliminado del servidor, vuelve a añadirlo como nuevo usuario. Para obtener más información, consulta ¿Cómo agrego nuevas cuentas de usuario con acceso SSH a mi instancia Amazon EC2 de Linux?

Hay problemas con los permisos en la instancia o falta un directorio

Existen cuatro métodos para comprobar los permisos y directorios en la instancia:

Método 1: uso de la consola serie de EC2

Si has activado la consola serie de Amazon EC2 para Linux, puedes utilizarla para solucionar problemas con los tipos de instancias basadas en Nitro compatibles. Puedes acceder a la consola serie mediante la consola de Amazon EC2 o Interfaz de la línea de comandos de AWS (AWS CLI). Para obtener más información, consulta Configurar el acceso a la consola serie de EC2.

Método 2: uso de Administrador de sesiones de AWS Systems Manager para iniciar sesión en la instancia y comprobar los permisos

Nota: Para utilizar este método, se debe instalar el agente de SSM. Para obtener más información sobre Administrador de sesiones y una lista completa de los requisitos previos, consulta Configuración de Administrador de sesiones.

  1. Abre la consola de AWS Systems Manager.

  2. Inicia una sesión.

  3. Utiliza el comando stat para comprobar si los permisos de los archivos del directorio principal home son correctos. A continuación, se muestra una lista de ejemplos de permisos correctos:
    Directorio principal de Linux, /home, (0755/drwxr-xr-x).
    Directorio principal del usuario, /home/ec2-user/, (0700/drwx------).
    Permiso de directorio.ssh, /home/ec2-user/.ssh, (0700/drwx------).
    Permiso de archivo authorized_keys, /home/ec2-user/.ssh/authorized_keys, (0600/-rw-------).
    A continuación, se muestra un ejemplo del comando stat y del resultado. En este ejemplo, ec2-user es el nombre de usuario. Cambia el nombre de usuario a tu 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. Si los permisos no coinciden con los valores anteriores, usa los siguientes 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. Finaliza la sesión.

  6. Conéctate mediante SSH a la instancia.

Método 3: para corregir automáticamente los problemas que causan el error, usa el documento AWSSupport-TroubleshootSSH

El documento de automatización AWSSupport-TroubleshootSSH instala la herramienta Amazon EC2Rescue en la instancia. A continuación, el documento de automatización comprueba y corrige los problemas que provocan errores de conexión remota durante la conexión de una máquina Linux mediante SSH. Para obtener más información, consulta Cuando intento conectarme a mi instancia de EC2 mediante SSH, se muestran mensajes de error. ¿Cómo puedo utilizar el flujo de trabajo de automatización AWSSupport-TroubleshootSSH para solucionar problemas de conexión de SSH?

Método 4: Utilización de los datos de usuario para establecer los permisos en la instancia

Importante:

  • Este procedimiento de recuperación requiere que detenga e inicie la instancia. Al hacerlo, se pierden los datos de los volúmenes del almacén de instancias. Para obtener más información, consulta Volúmenes raíz para las instancias de Amazon EC2.
  • Si la instancia forma parte de un grupo de Amazon EC2 Auto Scaling, es posible que finalice cuando se detenga. Esto también puede ocurrir en instancias lanzadas por servicios que utilizan AWS Auto Scaling, como Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk. La finalización de la instancia en este escenario depende de la configuración de la protección de desescalamiento de instancias del grupo de escalamiento automático. Si la instancia forma parte de un grupo de escalamiento automático, elimínala del grupo de escalamiento automático antes de iniciar los pasos para solucionar el problema. Puedes volver a añadir la instancia al grupo de escalamiento automático después de completar los pasos de resolución.
  • Al detener y reiniciar la instancia, se modifica la dirección IP pública. Se recomienda utilizar una dirección IP elástica en lugar de una dirección IP pública para enrutar el tráfico externo hacia la instancia.
  • No puedes cambiar la clave SSH con los datos de usuario si el dispositivo raíz de la instancia es un volumen de almacén de instancias. Para obtener más información, consulta Volúmenes raíz para las instancias de Amazon EC2.
  • La actualización de los datos de usuario de la instancia se aplica a todas las distribuciones que admitan las directivas cloud-init. Cloud-init debe estar instalado y configurado. Para obtener más información, consulta SSH - Configure SSH and SSH keys en el sitio web de Cloud-init.

Sigue estos pasos:

  1. Abre la consola de Amazon EC2 y, a continuación, elige tu instancia.

  2. Elige Estado de instancia y, a continuación, Detener instancia.
    Nota: Si Detener no está disponible, significa que la instancia ya está detenida o que el dispositivo raíz es un volumen de almacén de instancias.

  3. Elige Acciones, Configuración de la instancia y, a continuación, Editar datos de usuario.

  4. Copia el siguiente comando en el campo Datos de usuario y, a continuación, selecciona Guardar. Asegúrate de copiar todo el comando y no añadas espacios adicionales.
    Nota: El siguiente comando usa el nombre de usuario ec2-user. Cambie ec2-user por el nombre de usuario de tu 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. Inicia la instancia y, a continuación, usa SSH para conectarte a ella.
    Nota: De forma predeterminada, el comando de datos de usuario se pone en marcha una vez por instancia. Este procedimiento cambia el comportamiento predeterminado para añadir la clave pública cada vez que se reinicia, detiene o inicia la instancia. Para restaurar el comportamiento predeterminado, elimina los datos de usuario personalizados. Se recomienda seguir los protocolos de seguridad y permitir que los datos de los usuarios se pongan en marcha después del primer arranque de una instancia. Modifica los datos de usuario de una instancia con el método de API ModifyInstanceAttribute. Para restringir el acceso a este método, utiliza políticas de IAM.

Información relacionada

Conectarse a la instancia de Linux mediante PuTTY

Pares de claves e instancias de Amazon EC2

¿Cómo puedo solucionar los problemas de conexión a mi instancia de Linux de Amazon EC2 mediante SSH?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 9 meses