¿Por qué aparece el error «Server refused our key» cuando intento conectarme a mi instancia de EC2 mediante SSH?
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:
- Está utilizando un nombre de usuario incorrecto para la AMI al conectarse a la instancia de EC2. Los nombres de usuario habituales son ec2-user, ubuntu, centos, root o admin.
- El usuario que intentaba acceder a la instancia se ha eliminado del servidor o se ha bloqueado la cuenta.
- Hay problemas con los permisos en la instancia o falta un directorio.
- Está utilizando un archivo de claves privadas incorrecto para conectarte a la instancia de EC2. Para obtener más información, consulte la sección Compruebe que la clave privada es correcta en ¿Por qué recibo los errores «imported-openssh-key» o «Putty Fatal Error» al conectarme a mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2)?
- Se ha modificado la configuración del servidor SSH en /etc/ssh/sshd_config. Para obtener más información, consulte ¿Cómo puedo usar SSH para acceder a mi instancia EC2 después de cambiar el archivo sshd_config de la instancia?
- El sistema operativo no ha podido montar los directorios principales (/etc/fstab). Para obtener más información, consulte la sección Dependency failed errors en Why is my EC2 Linux instance not booting and going into emergency mode?
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.
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
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?
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 3 años