¿Cómo puedo usar SSH para acceder a mi instancia EC2 después de cambiar el archivo sshd_config de la instancia?
Cambié el archivo sshd_config de mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) y ahora no puedo acceder a mi instancia mediante SSH.
Descripción breve
Cambiar el archivo sshd_config de una instancia puede provocar un error de conexión denegada al conectarse a través de SSH.
Para confirmar que no puede acceder a la instancia debido a un error de conexión denegada, acceda a la instancia a través de SSH con la mensajería detallada activada. Consulte el siguiente ejemplo:
$ ssh -i "myawskey.pem" ec2-user@ec2-11-22-33-44.eu-west-1.compute.amazonaws.com -vvv
Este ejemplo se conecta con el nombre de DNS y usa myawskey.pem para el archivo de clave privada, con ec2-user como nombre de usuario. Sustituya el archivo de claves y el nombre de usuario del ejemplo por su propio archivo de claves y nombre de usuario.
El siguiente ejemplo muestra el mensaje de error conexión rechazada:
OpenSSH_7.9p1, LibreSSL 2.7.3 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 48: Applying options for * debug1: Connecting to ec2-11-22-33-44.eu-west-1.compute.amazonaws.com port 22. ssh: connect to host ec2-11-22-33-44.eu-west-1.compute.amazonaws.com port 22: Connection refused
Solución
Nota: Si usa una instancia basada en Nitro, los nombres de los dispositivos diferirán de los ejemplos dados en los siguientes pasos. Por ejemplo, en lugar de /dev/xvda o /dev/sda1, el nombre de dispositivo en una instancia basada en Nitro es /dev/nvme. Para más información, consulte Nombres de dispositivos en instancias de Linux.
Método 1: Use la consola serie de EC2
Si activó la consola serie de EC2 para Linux, puede usarla para solucionar problemas de tipos de instancia basados en Nitro. La consola serie le ayuda a solucionar problemas de inicio, configuración de red y configuración SSH. La consola serie se conecta a su instancia sin necesidad de una conexión de red en funcionamiento. Use la consola de Amazon EC2 o la interfaz de la línea de comandos de AWS (AWS CLI) para acceder a la consola serie.
Antes de usar la consola serie, conceda acceso a la consola a nivel de 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 use la consola serie debe incluir al menos un usuario basado en contraseña. Si no se puede acceder a su instancia y no configuró el acceso a la consola serie, siga las instrucciones de la sección, Método 2: Use una instancia de rescate. Para más información sobre cómo configurar la consola serie de EC2 para Linux, consulte Configurar el acceso a la consola serie de EC2.
Nota: Si recibe errores al ejecutar comandos de AWS CLI, asegúrese de que usa la versión más reciente de AWS CLI.
Método 2: Use una instancia de rescate
Advertencia:
- Si la instancia está respaldada por un almacén de instancias o tiene volúmenes de almacén de instancias que contienen datos, estos se perderán cuando detenga la instancia. Para 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 al detenerla se cancele la instancia. Las instancias que lance con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk pueden formar parte de un grupo de AWS Auto Scaling. En este caso, la terminación de la instancia depende de la configuración de protección contra desescalamiento horizontal de instancias de su grupo de escalamiento automático. Si su instancia forma parte de un grupo de escalamiento automático, elimine temporalmente la instancia del grupo de escalamiento automático antes de iniciar los pasos de resolución.
- Al detener e iniciar la instancia, se cambiará la dirección IP pública de la instancia. Si no desea que su dirección IP pública de EC2 cambie cuando reinicie o finalice su instancia, use una dirección IP elástica. Si usa Amazon Route 53, es posible que tenga que actualizar los registros DNS de Route 53 cuando cambie la IP pública.
1. Lance una nueva instancia de EC2 en su nube virtual privada (VPC). Use la misma imagen de máquina de Amazon (AMI) en la misma zona de disponibilidad que la instancia dañada. La nueva instancia se convierte en su instancia de rescate.
2. Detenga la instancia dañada.
3. Desconecte el volumen raíz de Amazon Elastic Block Store (Amazon EBS) (/dev/xvda o /dev/sda1) de su instancia dañada.
4. Conecte el volumen EBS como dispositivo secundario (/dev/sdf) a la instancia de rescate.
5. Use SSH para conectarse a su instancia de rescate.
6. Ejecute el comando lsblk para ver los dispositivos:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part
7. Cree un directorio de punto de montaje (/rescue) para el nuevo volumen que adjuntó a la instancia de rescate en el paso 4:
$ sudo mkdir /mnt/rescue
8. Monte el volumen en el directorio creado en el paso 7:
$ sudo mount -t xfs -o nouuid /dev/xvdf1 /mnt/rescue/
Para montar sistemas de archivos ext3 y ext4, ejecute el siguiente comando:
$ sudo mount /dev/xvdf1 /mnt/rescue
Nota: La sintaxis del comando de montaje anterior puede variar. Para más información, ejecute el comando man mount.
9. Ejecute de nuevo el comando lsblk para verificar que el volumen se montó en el directorio:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part /mnt/rescue
Corregir o copiar el archivo sshd_config
Puede investigar el archivo sshd_config en su instancia dañada y, si es necesario, revertir sus cambios. Use la salida de mensajería detallada de SSH para guiarle hasta la ubicación del error en el archivo:
$ sudo vi /mnt/rescue/etc/ssh/sshd_config
O bien, ejecute el siguiente comando para copiar el archivo sshd_config de la instancia de rescate a su instancia dañada. Este comando sustituye el contenido del archivo sshd_config de su instancia original:
$ sudo cp /etc/ssh/sshd_config /mnt/rescue/etc/ssh/sshd_config
Vuelva a conectar el volumen a la instancia original y pruebe la conexión
Nota: Si siguió el Método 2: Use una instancia de rescate, realice los siguientes pasos.
1. Ejecute el comando umount para desmontar el volumen:
$ sudo umount /mnt/rescue/
2. Desmonte el volumen secundario de la instancia de rescate y, a continuación, adjunte el volumen a la instancia original como /dev/xvda (volumen raíz).
4. Conéctese a la instancia mediante SSH para comprobar que puede acceder a la instancia.
Información relacionada
¿Por qué no puedo conectarme a mi instancia de Amazon EC2 Linux mediante SSH?
Contenido relevante
- OFICIAL DE AWSActualizada hace 10 meses
- ¿Cómo amplío mi sistema de archivos Linux después de aumentar el volumen de EBS en mi instancia EC2?OFICIAL DE AWSActualizada hace un año