¿Cómo puedo conectarme a mi instancia Amazon EC2 si perdí mi Key Pair SSH después de su lanzamiento inicial?

Oscar Ivan Ocampo
5 min readMay 29

--

En ocasiones hemos perdido u olvidado la keypar .pem de acceso ssh de nuestro servidor Amazon linux y no hemos podido conectar via ssh para administrar y gestionar nuestro servidor.

A continuación, les guiaré paso a paso para realizar la generación de una nueva key par y como ser configurada para la instancia Amazon Linux:

  1. Creación de la Key pair.

Ingresamos al servicio de EC2 →Key pair

Creación key par Ec2

Creamos el nombre de nuestro Key pair para nuestro caso “ec2recoveryssh”.

Vemos creada la nueva Key pair.

  • *Recuerde la ubicación de su máquina local donde ha guardado la Key pair.

2. Generación de la Public Key a partir de la Private Key

Una vez almacenada la llave en nuestro equipo local ( en mi caso en la Mac), ingresamos a la terminal de mi máquina local y realizamos el siguiente comando para generar nuestra llave pública que pondremos a nuestra instancia EC2 Linux.

ssh-keygen -y -f ec2recoveryssh.pem

El comando retorna la llave pública como la siguiente

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCu9UG1abx0GCNLwKwZ+J4a4PtuOsY8G4U5sY3xWZ43btUF4tKTjqWhRNR+5l0fUYU9kvspa8/+j5vr2NCEyd+2cppQ0lOK/+OmZsXjuyL+crWdA6byTbdGA1sFyzQGM85eWZ3TRpYTi2TdWKkfPzTLSUPf8pXtugyFLYNO9KvSkf1FUz5hioz9Ut3ESGH0XmF6VZlrn31arY9zeBymacFWOHK9Sb+0dVZSLEHW1ebss6Qr5Xe4xlw+0Ts4ZiqSM65q8vi73QkVx/2/XI2qubUOF2UpV8h8Mbq+v5pPZ/FwaBb3XvNjzvAFLSuNEC08q7JPPL1T9YvQ5wRMAtTRp7Qx

Si el comando falla, ejecute el siguiente comando para asegurarse de haber cambiado los permisos en su archivo de Key pair.

Chmod 400 nombredesukeypair

3. Inserción Publick Key en la instancia a través de User Data

Para la inserción de la Public Key es necesario apagar la instancia

Una vez se encuentra en Stop la instancia realizamos Actions, Instance settings, Edit user data.

Copiamos el siguiente Script

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:
- [users-groups, once]
users:
- name: username
ssh-authorized-keys:
- PublicKeypair

Reemplace el nombre de usuario con su nombre de usuario, en mi caso ec2-user. Puede ingresar el nombre de usuario predeterminado o ingresar un nombre de usuario personalizado, si se configuró uno previamente para la instancia.

En la sección que indica -PublicKeypair debe pegar la llave publica generada en el paso 2.

Ahora el Script para mi caso quedaría de la siguiente forma:

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:
- [users-groups, once]
users:
- name: ec2-user
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCu9UG1abx0GCNLwKwZ+J4a4PtuOsY8G4U5sY3xWZ43btUF4tKTjqWhRNR+5l0fUYU9kvspa8/+j5vr2NCEyd+2cppQ0lOK/+OmZsXjuyL+crWdA6byTbdGA1sFyzQGM85eWZ3TRpYTi2TdWKkfPzTLSUPf8pXtugyFLYNO9KvSkf1FUz5hioz9Ut3ESGH0XmF6VZlrn31arY9zeBymacFWOHK9Sb+0dVZSLEHW1ebss6Qr5Xe4xlw+0Ts4ZiqSM65q8vi73QkVx/2/XI2qubUOF2UpV8h8Mbq+v5pPZ/FwaBb3XvNjzvAFLSuNEC08q7JPPL1T9YvQ5wRMAtTRp7Qx

Ahora lo pegamos en la sección “Modify use data as text” y damos Save

Nuevamente encendemos la instancia para que los cambios queden.

Hacemos la prueba de conexión via SSH con la nueva Key Pair “ec2recoveryssh.pem”

oscar.ocampo@MacBook-Pro-de-Oscar prueba % ssh -i ec2recoveryssh.pem ec2-user@ec2-18-217-57-91.us-east-2.compute.amazonaws.com 
The authenticity of host 'ec2-18-217-57-91.us-east-2.compute.amazonaws.com (18.217.57.91)' can't be established.
ED25519 key fingerprint is SHA256:rpTDSiwd/miremadXALosMV6ejO+3Bwzrp52Bhg+YxE.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:11: ec2-3-17-145-76.us-east-2.compute.amazonaws.com
~/.ssh/known_hosts:13: ec2-18-117-153-196.us-east-2.compute.amazonaws.com
~/.ssh/known_hosts:14: ec2-3-143-222-107.us-east-2.compute.amazonaws.com
~/.ssh/known_hosts:15: ec2-18-221-194-129.us-east-2.compute.amazonaws.com
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-18-217-57-91.us-east-2.compute.amazonaws.com' (ED25519) to the list of known hosts.
Last login: Sun May 28 22:37:02 2023 from 200.118.16.101
[ec2-user@ip-172-31-18-113 ~]$

Hemos conectado satisfactoriamente vía SSH con la nueva Key pair a la instancia EC2.

Una vez ha sido probada la conexión damos nuevamente Stop a la instancia

Una vez se encuentra en Stop la instancia nuevamente realizamos Actions, Instance settings, Edit user data.

Eliminamos todo el script que se encuentra en la imagen seleccionada de la sección “Modify user data as text” y damos click en save para guardar los cambios.

Ahora volvemos a encender la instancia y de esta manera ya podemos gestionar la instancia con la nueva key pair generada.

Fuente de consulta :

--

--

Oscar Ivan Ocampo

Entrepreneur, travel lover, AWS x3, CIO High Cloud Tec , AWS Community Builder, passionate about cloud learning