No puede aplicar un par de claves a una instancia en ejecución. Solo puede usar el nuevo par de claves para iniciar una nueva instancia.
Para la recuperación, si se trata de un AMI de arranque de EBS, puede detenerlo y hacer una instantánea del volumen. Crea un nuevo volumen basado en él. Y poder usarlo nuevamente para iniciar la instancia anterior, crear una nueva imagen o recuperar datos.
Aunque los datos en el almacenamiento efímero se perderán.
Debido a la popularidad de esta pregunta y respuesta, quería capturar la información en el enlace que Rodney publicó en su comentario.
El crédito va a Eric Hammond por esta información .
Arreglando archivos en el volumen EBS raíz de una instancia EC2
Puede examinar y editar archivos en el volumen EBS raíz en una instancia EC2 incluso si se encuentra en lo que consideró una situación desastrosa como:
- Perdió su clave ssh u olvidó su contraseña
- Cometió un error al editar el archivo / etc / sudoers y ya no puede obtener acceso a la raíz con sudo para solucionarlo
- Su instancia de larga ejecución está bloqueada por algún motivo, no se puede contactar y no se inicia correctamente
- Necesita recuperar archivos fuera de la instancia pero no puede acceder a ella
En una computadora física ubicada en su escritorio, puede simplemente iniciar el sistema con un CD o una memoria USB, montar el disco duro, retirar y reparar los archivos, luego reiniciar la computadora para volver a estar en el negocio.
Sin embargo, una instancia remota de EC2 parece distante e inaccesible cuando se encuentra en una de estas situaciones. Afortunadamente, AWS nos proporciona la potencia y flexibilidad para poder recuperar un sistema como este, siempre que estemos ejecutando instancias de arranque de EBS y no almacenes de instancias.
El enfoque en EC2 es algo similar a la solución física, pero vamos a mover y montar el "disco duro" defectuoso (volumen EBS raíz) a una instancia diferente, arreglarlo y luego volverlo a mover.
En algunas situaciones, podría ser simplemente más fácil iniciar una nueva instancia de EC2 y descartar la mala, pero si realmente desea corregir sus archivos, este es el enfoque que ha funcionado para muchos:
Preparar
Identifique la instancia original (A) y el volumen que contiene el volumen EBS raíz roto con los archivos que desea ver y editar.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Identifique la segunda instancia de EC2 (B) que utilizará para corregir los archivos en el volumen EBS original. Esta instancia debe ejecutarse en la misma zona de disponibilidad que la instancia A para que pueda tener el volumen EBS adjunto. Si aún no tiene una instancia en ejecución, inicie una temporal.
instance_b=i-YYYYYYYY
Detenga la instancia rota A (esperando que se detenga por completo), desconecte el volumen raíz EBS de la instancia (esperando que se desconecte), luego conecte el volumen a la instancia B en un dispositivo no utilizado.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh a la instancia B y monte el volumen para que pueda acceder a su sistema de archivos.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Arreglalo
En este punto, todo el sistema de archivos raíz de la instancia A está disponible para ver y editar en / vol-a en la instancia B. Por ejemplo, es posible que desee:
- Coloque las claves ssh correctas en /vol-a/home/ubuntu/.ssh/authorized_keys
- Edite y arregle / vol-a / etc / sudoers
- Busque mensajes de error en / vol-a / var / log / syslog
- Copie archivos importantes de / vol-a / ...
Nota: Los uid en las dos instancias pueden no ser idénticos, así que tenga cuidado si está creando, editando o copiando archivos que pertenecen a usuarios no root. Por ejemplo, su usuario de mysql en la instancia A puede tener el mismo UID que su usuario de postfix en la instancia B, lo que podría causar problemas si crea archivos con un nombre y luego mueve el volumen nuevamente a A.
Envolver
Una vez que haya terminado y esté satisfecho con los archivos en / vol-a, desmonte el sistema de archivos (todavía en la instancia-B):
sudo umount /vol-a
sudo rmdir /vol-a
Ahora, de vuelta en su sistema con ec2-api-tools, continúe moviendo el volumen de EBS nuevamente a su hogar en la instancia original A e inicie la instancia nuevamente:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Afortunadamente, solucionó el problema, la instancia A sale bien y puede lograr lo que originalmente se propuso hacer. De lo contrario, es posible que deba continuar repitiendo estos pasos hasta que lo tenga funcionando.
Nota: Si tenía una dirección IP elástica asignada a la instancia A cuando la detuvo, deberá volver a asociarla después de iniciarla nuevamente.
¡Recuerda! Si su instancia B se inició temporalmente solo para este proceso, no olvide terminarla ahora.
ssh-add
Debe hacer lo que necesita.