Conectarse a la instancia de Linux tras la pérdida de la clave privada - Amazon Elastic Compute Cloud

Conectarse a la instancia de Linux tras la pérdida de la clave privada

Si pierde la clave privada para una instancia respaldada por EBS, puede volver a obtener acceso a la instancia. Para ello, debe detener la instancia, desconectar su volumen raíz y asociarlo a otra instancia como volumen de datos, modificar el archivo authorized_keys con una nueva clave pública, trasladar el volumen de nuevo a la instancia original y reiniciar la instancia. Para obtener más información acerca de cómo lanzar, conectar y detener instancias, consulte Ciclo de vida de la instancia.

Este procedimiento no se admite para instancias con volúmenes raíz respaldados por un almacén de instancias. Para determinar el tipo de dispositivo raíz de la instancia, abra la consola de Amazon EC2, elija Instances (Instancias), seleccione la instancia y compruebe el valor de Root device type (Tipo de dispositivo raíz) en el panel de detalles. El valor es ebs o instance store. Si el dispositivo raíz es un volumen del almacén de instancias, no puede utilizar este procedimiento para recuperar el acceso a la instancia; debe tener la clave privada para conectarse a la instancia.

Paso 1: Crear un nuevo par de claves

Cree un nuevo par de claves mediante la consola de Amazon EC2 o una herramienta de terceros. Si desea dar al nuevo par de claves el mismo nombre que tenía la clave privada que perdió, primero debe eliminar el par de claves existente. Para obtener información sobre cómo crear un par de claves, consulte Opción 1: Crear un par de claves mediante Amazon EC2 o Opción 2: Importe su propia clave pública a Amazon EC2.

Paso 2: Obtener información sobre la instancia original y su volumen raíz

Nueva consola

Para obtener información sobre la instancia original

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. Elija Instances (Instancias) en el panel de navegación y, a continuación, seleccione la instancia a la que desee conectarse. (Nos referiremos a ella como la instancia original).

  3. En la pestaña Details (Detalles), anote el ID de la instancia y el ID de la AMI.

  4. En la pestaña Networking (Redes), anote la zona de disponibilidad.

  5. En la pestaña Storage (Almacenamiento), anote el nombre del dispositivo para el volumen raíz en Root device name (Nombre del dispositivo raíz) (por ejemplo, /dev/xvda). Encuentre este nombre de dispositivo en Block devices (Dispositivos de bloques) y anote el ID del volumen (por ejemplo, vol-0a1234b5678c910de).

Consola antigua

Para obtener información sobre la instancia original

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. Elija Instances (Instancias) en el panel de navegación y, a continuación, seleccione la instancia a la que desee conectarse. (Nos referiremos a ella como la instancia original).

  3. En la pestaña Description (Descripción), guarde la siguiente información que necesitará para completar este procedimiento.

    • Anote el ID de instancia, el ID de AMI y la zona de disponibilidad de la instancia original.

    • En el campo Root device (Dispositivo raíz), busque y anote el nombre de dispositivo del volumen raíz (por ejemplo, /dev/sda1 o /dev/xvda). Elija el enlace y anote el ID de volumen en el campo EBS ID (ID de EBS) (vol-xxxxxxxxxxxxxxxxx).

Paso 3: Detener la instancia original

Elija Instance state (Estado de la instancia) y Stop instance (Detener instancia). Si esta opción está desactivada, la instancia ya está detenida o bien su dispositivo raíz es un volumen de almacén de instancias.

aviso

Cuando detiene una instancia, se borran los datos contenidos en todos los volúmenes de almacén de instancias. Para conservar los datos de los volúmenes del almacén de instancias, asegúrese de realizar una copia de seguridad en un sistema de almacenamiento persistente.

Paso 4: Lanzar una instancia temporal

Elija Launch Instance (Lanzar instancia) y, a continuación, utilice el asistente de lanzamiento para lanzar una instancia temporal con las siguientes opciones:

  • En la página Choose an AMI (Elegir una AMI), seleccione la misma AMI que utilizó para lanzar la instancia original. Si esta AMI no está disponible, puede crear una AMI que puede utilizar a partir de la instancia detenida. Para obtener más información, consulte Creación de una AMI de Linux con el respaldo de Amazon EBS.

  • En la página Choose an Instance Type (Elegir un tipo de instancia), deje el tipo de instancia predeterminado que el asistente haya seleccionado.

  • En la página Configure Instance Details (Configurar detalles de la instancia), especifique la misma zona de disponibilidad que la de la instancia original. Si va a lanzar una instancia en una VPC, seleccione una subred en esta zona de disponibilidad.

  • En la página Add Tags (Añadir etiquetas), añada la etiqueta Name=Temporary a la instancia para indicar que se trata de una instancia temporal.

  • En la página Review (Revisión), seleccione Launch (Lanzar). Cree un par de claves nuevo, descárguelo en un lugar seguro de su equipo y, a continuación, elija Launch Instances (Lanzar instancias).

Paso 5: Desconectar el volumen raíz de la instancia original y asociarlo a la instancia temporal

  1. En el panel de navegación, seleccione Volumes (Volúmenes) y seleccione el volumen de dispositivo raíz para la instancia original (anotó el ID de volumen en uno de los pasos anteriores). Seleccione Actions (Acciones), Detach Volume (Desconectar volumen) y, a continuación, Yes, Detach (Sí, Desconectar). Espere a que el estado del volumen cambie a available. (Es posible que necesite seleccionar el icono Refresh (Actualizar)).

  2. Con el volumen todavía seleccionado, elija Actions (Acciones) y, a continuación, seleccione Attach Volume (Asociar volumen). Seleccione el ID de la instancia temporal, anote el nombre de dispositivo especificado en Device (Dispositivo) (por ejemplo, /dev/sdf) y, a continuación, elija Attach (Asociar).

    nota

    Si lanzó la instancia original a partir de una AMI de AWS Marketplace y el volumen contiene códigos de AWS Marketplace, primero debe detener la instancia temporal antes de poder adjuntar el volumen.

Paso 6: Agregar la nueva clave pública a authorized_keys en el volumen original montado en la instancia temporal

  1. Conéctese a la instancia temporal.

  2. Desde la instancia temporal, monte el volumen que adjuntó a la instancia para que pueda obtener acceso a su sistema de archivos. Por ejemplo, si el nombre de dispositivo es /dev/sdf, utilice los siguientes comandos para montar el volumen como /mnt/tempvol.

    nota

    El nombre de dispositivo podría aparecer de forma diferente en la instancia. Por ejemplo, los dispositivos montados como /dev/sdf podrían mostrarse como /dev/xvdf en la instancia. Algunas versiones de Red Hat (o sus variantes como CentOS), incluso pueden aumentar la letra final en cuatro caracteres, donde /dev/sdf se convierte en /dev/xvdk.

    1. Utilice el comando lsblk para determinar si el volumen está particionado.

      [ec2-user ~]$ 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 101G 0 disk └─xvdf1 202:81 0 101G 0 part xvdg 202:96 0 30G 0 disk

      En el ejemplo anterior, /dev/xvda y /dev/xvdf son volúmenes particionados, mientras que /dev/xvdg no lo es. Si el volumen está particionado, monte la partición (/dev/xvdf1) en lugar del dispositivo tal cual (/dev/xvdf) en los siguientes pasos.

    2. Cree un directorio temporal para montar el volumen.

      [ec2-user ~]$ sudo mkdir /mnt/tempvol
    3. Monte el volumen (o la partición) en el punto de montaje temporal utilizando el nombre del volumen o el nombre de dispositivo que identificó anteriormente. El comando requerido depende del sistema de archivos de su sistema operativo.

      • Amazon Linux, Ubuntu y Debian

        [ec2-user ~]$ sudo mount /dev/xvdf1 /mnt/tempvol
      • Amazon Linux 2, CentOS, SUSE Linux 12 y RHEL 7.x

        [ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol
    nota

    Si recibe un error que indica que el sistema de archivos está corrupto, ejecute el comando siguiente para usar la utilidad fsck para comprobar el sistema de archivos y reparar cualquier problema:

    [ec2-user ~]$ sudo fsck /dev/xvdf1
  3. Desde la instancia temporal, utilice el siguiente comando para actualizar authorized_keys en el volumen montado con la nueva clave pública de authorized_keys para la instancia temporal.

    importante

    Los ejemplos siguientes utilizan el nombre de usuario de Amazon Linux ec2-user. Es posible que necesite sustituirlo por un nombre de usuario diferente, como ubuntu para las instancias de Ubuntu.

    [ec2-user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Si esta copia funciona correctamente, puede proceder al paso siguiente.

    (Opcional) De lo contrario, si no tiene permiso para editar archivos en /mnt/tempvol, debe actualizar el archivo mediante el comando sudo y, a continuación, comprobar los permisos del archivo para asegurarse de que podrá iniciar sesión en la instancia original. Use el siguiente comando para comprobar los permisos del archivo.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh total 4 -rw------- 1 222 500 398 Sep 13 22:54 authorized_keys

    En el resultado de este ejemplo, 222 es el ID de usuario y 500 es el ID de grupo. A continuación, utilice el comando sudo para volver a ejecutar el comando de copia que produjo un error.

    [ec2-user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Ejecute el siguiente comando de nuevo para determinar si los permisos han cambiado.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh

    Si el ID de usuario y el ID de grupo han cambiado, use el siguiente comando para restaurarlos.

    [ec2-user ~]$ sudo chown 222:500 /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

Paso 7: Desmontar y desconectar el volumen original de la instancia temporal y volver a asociarlo a la instancia original

  1. Desde la instancia temporal, desmonte el volumen que adjuntó para que pueda volver a adjuntarlo a la instancia original. Por ejemplo, utilice el siguiente comando para desmontar el volumen en /mnt/tempvol.

    [ec2-user ~]$ sudo umount /mnt/tempvol
  2. Desconecte el volumen de la instancia temporal (lo desmontó en el paso anterior): en la consola de Amazon EC2, seleccione el volumen del dispositivo raíz de la instancia original (anotó el ID del volumen en un paso anterior), elija Actions (Acciones), Detach Volume (Desconectar volumen) y a continuación, seleccione Yes, Detach (Sí, desconectar). Espere a que el estado del volumen cambie a available. (Es posible que necesite seleccionar el icono Refresh (Actualizar)).

  3. Vuelva a conectar el volumen a la instancia original: con el volumen seleccionado, elija Actions (Acciones), Attach Volume (Asociar volumen). Seleccione el ID de la instancia original, especifique el nombre de dispositivo que anotó anteriormente en Paso 2 para la asociación del dispositivo raíz original (/dev/sda1 o /dev/xvda) y, a continuación, elija Asociar.

    importante

    Si no especifica el mismo nombre de dispositivo que el de la asociación original, no podrá iniciar la instancia original. Amazon EC2 espera que el volumen del dispositivo raíz sea sda1 o /dev/xvda.

Paso 8: Conectarse a la instancia original utilizando el nuevo par de claves

Seleccione la instancia original y elija Instance state (Estado de la instancia) y Start instance (Iniciar instancia). Cuando la instancia pase a estado running, puede conectarse a ella utilizando el archivo de clave privada para su nuevo par de claves.

nota

Si el nombre de su nuevo par de claves y del archivo de clave privada correspondiente es diferente al del par de claves original, asegúrese de especificar el nombre del nuevo archivo de clave privada al conectarse a la instancia.

Paso 9: Limpieza

(Opcional) Puede terminar la instancia temporal cuando no vaya a utilizarla más. Seleccione la instancia temporal y elija Instance state (Estado de la instancia) y Terminate instance (Terminar instancia).