¿Por qué aparece el error “Server refused our key” (El servidor rechazó la clave) cuando intento conectarme a mi instancia de EC2 mediante SSH?

9 minutos de lectura
0

Aparece el error “Server refused our key” (El servidor rechazó la clave) cuando intento conectarme a mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) mediante SSH.

Descripción breve

Existen varios motivos por los que un servidor SSH (sshd) rechaza una clave SSH privada. Los siguientes son algunos de los motivos comunes por los que podría recibir este error:

Resolución

El nombre de usuario que usa para su AMI cuando se conecta a su instancia de EC2 es incorrecto

Para obtener una lista de nombres de usuario válidos, consulte Error: Server refused our key (El servidor rechazó la clave) o No supported authentication methods available (No hay métodos de autenticación compatibles disponibles).

El usuario que intentaba acceder a la instancia se borró del servidor o la cuenta se bloqueó

Si el usuario que intentaba acceder a la instancia se borró del servidor, vuelva a agregarlo como un nuevo usuario. Para más información, consulte ¿Cómo agrego nuevas cuentas de usuario con acceso SSH a mi instancia Amazon EC2 de Linux?

Hay problemas de permisos en la instancia o le falta un directorio

Hay cuatro métodos para verificar los permisos y directorios de la instancia:

Método 1: utilizar la consola serie de EC2

Si habilitó la consola serie de EC2 para Linux, puede usarla para solucionar problemas de tipos de instancias compatibles basadas en Nitro. La consola serie ayuda a solucionar los problemas de inicio, configuración de red y configuración de SSH. La consola serie se conecta a la instancia sin necesidad de una conexión de red funcional. 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 usar la consola serie, debe conceder acceso a ella para la cuenta. A continuación, cree políticas de AWS Identity and Access Management (IAM) que concedan acceso a sus usuarios de IAM. Además, cada instancia que utilice la consola serie debe incluir como mínimo un usuario con contraseña. Si su instancia no está disponible y no ha configurado el acceso a la consola de serie, siga las instrucciones de los métodos 2, 3 o 4. Para obtener información sobre cómo configurar la consola serie de EC2 para Linux, consulte Configurar el acceso a la consola serie de EC2.

Método 2: usar AWS System Manager Session Manager para entrar en la instancia y comprobar los permisos

Nota: Se requiere la instalación de SSM Agent para utilizar este método. Para obtener más información sobre el administrador de sesiones y obtener una lista completa de los requisitos previos, consulte Configuración de Session Manager.

1.    Abra la consola de AWS Systems Manager.

2.    Inicie una sesión.

3.    Use el comando stat para asegurarse de que los permisos de los archivos en el directorio home sean correctos. La siguiente es una lista de los permisos correctos:

  • El directorio home de Linux, /home, por ejemplo, tiene que ser (0755/drwxr-xr-x).
  • El directorio home del usuario, /home/ec2-user/, por ejemplo, tiene que ser (0700/drwx------).
  • El permiso del directorio .ssh, /home/ec2-user/.ssh, por ejemplo, tiene que ser (0700/drwx------).
  • El permiso del archivo authorized_keys, /home/ec2-user/.ssh/authorized_keys, por ejemplo, tiene que ser (0600/-rw-------).

A continuación se muestra un ejemplo del comando stat y la salida resultante. En este ejemplo, ec2-user es el nombre de usuario. Cambie el nombre de usuario según su AMI específico:

$ 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.    Termine la sesión.

6.    SSH para su instancia.

Método 3: corregir automáticamente los problemas que causan 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 luego comprueba y corrige algunos problemas que causan errores de conexión remota al conectarse a una máquina Linux a través de SSH. Para obtener más información, consulte I'm receiving errors when trying to connect to my EC2 instance using SSH. (Recibo errores al intentar conectarme a mi instancia de EC2 mediante SSH.) How can I use the AWSSupport-TroubleshootSSH automation workflow to troubleshoot SSH connection issues? (¿Cómo puedo usar el flujo de trabajo de automatización de AWSSupport-TroubleshootSSH para solucionar problemas de conexión de SSH?)

Método 4: usar los datos del usuario para corregir los permisos de la instancia

Importante

  • Este procedimiento de recuperación requiere que usted detenga e inicie su 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 la instancia se termine cuando se detenga. Esto también puede ocurrir en las instancias lanzadas por servicios que usan AWS Auto Scaling, como Amazon EMR, AWS CloudFormation, AWS Elastic Beanstalk, etc. La terminación de la instancia en este caso depende de la configuración de la protección de escalado de la instancia para su grupo de Auto Scaling. Si la instancia forma parte de un grupo de Auto Scaling, elimine temporalmente la instancia del grupo de Auto Scaling antes de comenzar los pasos de resolución.
  • Detener y reiniciar la instancia cambia la dirección IP pública de su instancia. Es una práctica recomendada utilizar una dirección IP elástica en lugar de una dirección IP pública cuando se dirige el tráfico externo a su 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 su instancia se aplica a todas las distribuciones que admiten directivas de cloud-init. Para el éxito de estas instrucciones, es necesario instalar y configurar cloud-init. Para más información sobre el módulo SSH de cloud-init, consulte SSH - Configure SSH and SSH keys (SSH: configuración de SSH y claves SSH) en la documentación de cloud-init.

1.    Abra la consola Amazon EC2 y luego seleccione su instancia.

2.    Seleccione Instance State (Estado de la instancia) y, a continuación, Stop instance (Detener instancia).

Nota: Si la opción Stop (Detener) no está habilitada, se debe a que la instancia ya se detuvo o su dispositivo raíz es un volumen de almacén de instancias.

3.    Seleccione Actions (Acciones), Instance Settings (Configuración de la instancia) y, a continuación, Edit User Data (Editar datos de usuario).

4.    Copie el siguiente script en el campo Datos de usuario y luego seleccione Guardar. Asegúrese de copiar todo el script y no agregar espacios adicionales.

Nota: El siguiente script utiliza el nombre de usuario ec2-user. Cambie ec2-user al nombre de usuario para 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 luego SSH en la instancia.

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 restablecer el comportamiento predeterminado, elimine los datos de usuario personalizados. Como práctica recomendada, tenga en cuenta las consecuencias en torno a la seguridad si se permite que los datos del usuario se ejecuten después del primer inicio 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, use las políticas de IAM.


Información relacionada

Conectarse a la instancia de Linux desde Windows mediante PuTTY

Pares de claves de Amazon EC2 e instancias de Windows

Why can't I connect to my Amazon EC2 Linux instance using SSH? (¿Por qué no puedo conectarme a mi instancia de Amazon EC2 Linux con SSH?)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses