Saltar al contenido

¿Por qué recibo el mensaje de 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.

Resolución

El servidor SSH (sshd) puede rechazar una clave SSH privada por uno de los siguientes motivos:

También es posible que recibas el mensaje de error Server refused our key si tu instancia tiene problemas de permisos o le falta un directorio. Para verificar los permisos y directorios de la instancia, usa uno de los siguientes métodos.

Utilización de la consola serie de EC2

Si has activado la consola serie de EC2 para Linux, puedes utilizarla para solucionar problemas con los tipos de instancia basados en Nitro compatibles.

Uso de Systems Manager para iniciar sesión en la instancia y comprobar los permisos

Requisito previo: Instala AWS Systems Manager Agent (SSM Agent). Además, asegúrate de que tu configuración cumpla con los requisitos previos de Session Manager, una capacidad de AWS Systems Manager.

Para usar Session Manager para solucionar problemas de la instancia, sigue estos pasos:

  1. Abre la consola de Systems Manager.

  2. Inicia una sesión.

  3. Para comprobar si los archivos del directorio principal tienen los permisos correctos, ejecuta el siguiente 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)     

    Nota: Sustituye ec2-user por el nombre de usuario correcto para tu AMI.
    En el resultado, comprueba el acceso para asegurarte de que tu configuración utiliza los siguientes permisos:
    El directorio principal de Linux /home debe tener los permisos 0755/drwxr-xr-x.
    El directorio principal del usuario /home/ec2-user/ debe tener los permisos 0700/drwx------.
    El permiso del directorio .ssh /home/ec2-user/.ssh debe tener los permisos 0700/drwx------.
    El permiso del archivo /home/ec2-user/.ssh/authorized_keys authorized_keys debe tener permisos 0600/-rw-------.
    Resultado de ejemplo:

    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 actualizar los permisos de la configuración, ejecuta 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

    Nota: Sustituye ec2-user por el nombre de usuario correcto para tu AMI.

  5. Finaliza la sesión.

  6. Usa SSH para conectarte a tu instancia.

Ejecución del runbook AWSSupport-TroubleshootSSH

Para corregir automáticamente los problemas que causan errores, ejecuta AWSSupport-TroubleshootSSH. El runbook instala la herramienta Amazon EC2Rescue en la instancia y, a continuación, identifica y corrige los problemas que provocan errores de conexión remota durante 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?

Utilización de los datos de usuario para establecer los permisos en la instancia

Importante: Antes de detener e iniciar la instancia, lleva a cabo las siguientes acciones:

Nota: Al detener e iniciar una instancia, la dirección IP pública de la instancia cambia. Se recomienda utilizar una dirección IP elástica para enrutar el tráfico externo hacia la instancia en lugar de una dirección IP pública. Si usas Amazon Route 53, es posible que tengas que actualizar los registros DNS de Route 53 cuando cambies la dirección IP pública.

Para usar los datos de usuario para solucionar problemas de permisos, sigue estos pasos:

  1. Abre la consola de Amazon EC2.

  2. En el panel de navegación, elige Instancias y, a continuación, selecciona la instancia.

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

  4. Selecciona Acciones y, a continuación, selecciona Configuración de la instancia.

  5. Selecciona Editar datos de usuario y, a continuación, introduce el siguiente 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
    --//

    Nota: Sustituye ec2-user por el nombre de usuario correcto para tu AMI. No agregues espacios adicionales al escribir el comando anterior.

  6. Selecciona Guardar.

  7. Inicia la instancia y, a continuación, usa SSH para conectarte a ella.

De forma predeterminada, el comando de datos de usuario se pone en marcha una vez para cada instancia. Los pasos anteriores cambian el comportamiento predeterminado para agregar la clave pública en cada reinicio, parada o inicio de la instancia. Para restaurar el comportamiento predeterminado, elimina los comandos de los datos de usuario personalizados. Se recomienda permitir que los datos de usuario se ejecuten después del primer arranque de la instancia. Puedes usar la API ModifyInstanceAttribute para modificar los datos de usuario de una instancia. Para restringir el acceso a la API ModifyInstanceAttribute, utiliza las políticas de AWS Identity and Access Management (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?

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