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

8 minutos de lectura
0

Se muestra 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 se puede mostrar este error:

Solución

Está utilizando un nombre de usuario incorrecto para la AMI al conectarse a la instancia de EC2

Para obtener una lista de nombres de usuario válidos, consulte Error: Server refused our key o No supported authentication methods available.

El usuario que intentaba acceder a la instancia se ha eliminado del servidor o se ha bloqueado la cuenta

Si el usuario que intentaba acceder a la instancia se ha eliminado del servidor, vuelva a añadirlo como nuevo usuario. Para obtener más información, consulte ¿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: Utilización de la consola serie de EC2

Si ha activado la consola serie de EC2 para Linux, puede utilizarla para solucionar problemas con los tipos de instancia basados en Nitro compatibles. La consola serie le ayuda a solucionar problemas de arranque, configuración de red y configuración SSH. La consola serie se conecta a la instancia sin necesidad de una conexión de red activa. Puede acceder a la consola serie mediante la consola de Amazon EC2 o la Interfaz de la línea de comandos de AWS (AWS CLI).

Antes de utilizar la consola serie, debe concederle acceso en el nivel de cuenta. A continuación, debe crear políticas de AWS Identity and Access Management (IAM) que concedan acceso a los usuarios de IAM. Además, cada instancia que use la consola serie debe incluir al menos un usuario con contraseña. Si no puede acceder a la instancia y no ha configurado el acceso a la consola serie, siga las instrucciones de los métodos 2, 3 o 4. Para obtener información sobre la configuración de la consola serie de EC2 para Linux, consulte Configurar el acceso a la consola serie de EC2.

Método 2: Utilización del 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 el Administrador de sesiones y una lista completa de los requisitos previos, consulte Setting up Session Manager.

1.    Abra la consola de AWS Systems Manager.

2.    Inicie una sesión.

3.    Utilice 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 los permisos correctos:

  • El directorio principal de Linux, /home, por ejemplo, debería ser (0755/drwxr-xr-x).
  • El directorio principal del usuario, /home/ec2-user/, por ejemplo, debería ser (0700/drwx------).
  • El permiso del directorio .ssh, /home/ec2-user/.ssh, por ejemplo, debería ser (0700/drwx------).
  • El permiso del archivo authorized_keys, /home/ec2-user/.ssh/authorized_keys, por ejemplo, debería ser (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. Cambie el nombre de usuario según su 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, ejecute 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.    Finalice la sesión.

6.    Conéctese mediante SSH a la instancia.

Método 3: Corrección automática de los problemas que provocan el error mediante la ejecución del documento AWSSupport-TroubleshootSSH

El documento de automatización AWSSupport-TroubleshootSSH instala la herramienta Amazon EC2Rescue en la instancia y, a continuación, comprueba y corrige algunos problemas que provocan errores de conexión remota al conectarse a un equipo de Linux a través de SSH. Para obtener más información, consulte 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, consulte Determinar el tipo de dispositivo raíz de la instancia.
  • Si la instancia forma parte de un grupo de Amazon EC2 Auto Scaling, es posible que termine cuando se detenga. Esto también puede ocurrir en instancias lanzadas por servicios que utilizan AWS Auto Scaling, como Amazon EMR, AWS CloudFormation, AWS Elastic Beanstalk, etc. La terminación de la instancia en este escenario depende de la configuración de protección frente al escalado descendiente de las instancias del grupo de escalamiento automático. Si la instancia forma parte de un grupo de escalamiento automático, elimínela temporalmente del grupo de escalamiento automático antes de iniciar los pasos para solucionar el problema.
  • Al detener y reiniciar la instancia, se modifica su 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 puede 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, consulte Determinar el tipo de dispositivo raíz de la instancia.
  • 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 que estas instrucciones se ejecuten correctamente. Para obtener más información sobre el módulo SSH de cloud-init, consulte SSH - Configure SSH and SSH keys en la documentación de Cloud-init.

1.    Abra la consola de Amazon EC2 y, a continuación, seleccione la instancia.

2.    Elija 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.    Elija Acciones, Configuración de la instancia y, a continuación, Editar datos de usuario.

4.    Copie el siguiente script en el campo Datos de usuario y, a continuación, seleccione Guardar. Asegúrese de copiar todo el script y no añada espacios adicionales.

Nota: El siguiente script utiliza el nombre de usuario ec2-user. Cambie ec2-user por el nombre de usuario de su 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 la instancia y, a continuación, conéctese a ella mediante SSH.

Nota: De forma predeterminada, el script de datos de usuario se ejecuta una vez por instancia. Este procedimiento cambia el comportamiento predeterminado para agregar la clave pública cada vez que se reinicia, detiene o inicia la instancia. Para restaurar el comportamiento predeterminado, elimine los datos de usuario personalizados. Se recomienda tener en cuenta las implicaciones para la seguridad cuando se permite que los datos de usuario se ejecuten después del primer arranque de una instancia. Puede modificar los datos de usuario de una instancia con el método API ModifyInstanceAttribute. Para restringir el acceso a este método, utilice políticas de IAM.

Información relacionada

Conéctese a la instancia de Linux desde Windows con PuTTY

Pares de claves de Amazon EC2 e instancias de Windows

Why can't I connect to my Amazon EC2 Linux instance using SSH?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año