¿Cómo puedo usar SSH para acceder a mi instancia EC2 después de cambiar el archivo sshd_config de la instancia?

6 minutos de lectura
0

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).

3.    Inicie la instancia.

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?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año