EC2: Llaves públicas, privadas y contraseñas para instancias Linux y Windows

Michael Taquía Ayllón
AWS User Group Peru Oficial
4 min readJul 16, 2020

Continuando con las preguntas iniciadas en post de diferencias entre las AMI Linux la siguiente consulta fue si podemos usar las key pair de Linux en Windows. La respuesta corta es: ¡si se puede! Los detalles en el siguiente post.

¿Que son las key pair?

Es un conjunto de llaves pública y privada que se usan como credenciales de seguridad para conectarse a una instancia. Amazon EC2 almacena la llave pública y el usuario guarda la llave privada para acceso seguro a la instancia.

Una misma key pair puede usarse para crear muchas instancias sean éstas Linux o Windows.

Para ver las key pair creadas en mi cuenta ir a: EC2 > Network & Security > Key pairs.

Key pairs : Se pueden listar y filtrar

Puedo generar key pairs nuevas al momento de crear una instancia o en cualquier momento en botón Create Key Pair. Recordar que sólo se puede descargar una vez la llave privada(private key) al momento de su creación por lo que se debe tener cuidado de almacerla y no compartirla.

Radiografía de una Key Pair

Como se informó al inicio, una key pair consta de 2 partes llave pública y llave privada. Las llaves que usa Amazon EC2 son de 2048 bits SSH-2 RSA.

Ejemplo de llave privada: continental.pem (formato OpenSSH).

Key Pair : Ejemplo de llave privada continental.pem

Llaves en Instancias Linux :

Para conectarnos a instancias Linux sólo necesitamos ingresar en un cliente SSH la llave privada, usuario (ec2-user) e IP de instancia.

Para usuarios Windows recomiento como cliente SSH la versión free de MobaxTerm

En instancias Linux la llave pública se guarda en archivo /home/ec2-user/ssh/authorized_keys:

[ec2-user@ip-172–31–25–23 ~]$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCGIzt3BGsWH0xjDpaoQDxaZUWPe9DXzCEtbOmFQwtZK+m6YU1GEeCm9SwcK3Vm7XOUGw3L7/pqigA0/WQWT24l81JPACGkUDgoJqLzfcFMwLzHebZbwvdLwEDdx8/ABnXaf6oN1npo9mV0/O4YCPqAtjISHGb/7WLJEnNToDOcW4/0Ac9ja7JndmOU2+0IJQL1mt975BWjK6azJi8lllfxWU28L/a9OagPQrHJq/9/7KlUgRGKtmYLJIsDQW04wQKUCtqHjuTiVJ8y/hcbRhcG0HOrqPMyw/fcMPchY7nZwefIEk9YvTLnZ9C5KXMH/bB6mNLW5JXUS1gbEFJ3NulL continental

La llave pública puede ser recreada desde la llave privada:
[ec2-user@ip-172–31–25–23 ~]$ ls -ltrh continental.pem
-r — — — — 1 ec2-user ec2-user 1.7K Jul 10 22:55 continental.pem

[ec2-user@ip-172–31–25–23 ~]$ ssh-keygen -yf continental.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCGIzt3BGsWH0xjDpaoQDxaZUWPe9DXzCEtbOmFQwtZK+m6YU1GEeCm9SwcK3Vm7XOUGw3L7/pqigA0/WQWT24l81JPACGkUDgoJqLzfcFMwLzHebZbwvdLwEDdx8/ABnXaf6oN1npo9mV0/O4YCPqAtjISHGb/7WLJEnNToDOcW4/0Ac9ja7JndmOU2+0IJQL1mt975BWjK6azJi8lllfxWU28L/a9OagPQrHJq/9/7KlUgRGKtmYLJIsDQW04wQKUCtqHjuTiVJ8y/hcbRhcG0HOrqPMyw/fcMPchY7nZwefIEk9YvTLnZ9C5KXMH/bB6mNLW5JXUS1gbEFJ3NulL

Comparemos el presente resultado generado desde la llave pública con la lectura del archivo /home/ec2-user/ssh/authorized_keys ,observamos que son similares con la excepción que en archivo authorized_keys se agrega al final el nombre del key pair (continental en este caso).

Si estás interesado en conocer la negociación SSH entre el Servidor SSH(instancia) y tu computador aquí un diagrama muy útil:

Al intentar conectarte a tu instancia Linux ésta te envia un reto que sólo puede ser resuelto si posees la llave privada.

Para mayores detalles te sugiero llevar el curso gratuito SSH Basics for Cloud Security en Udemy, ¡toma menos de una hora!

Llaves en instancias Windows:

Para conectarnos a instancias Windows no usamos el archivo PEM directamente sino que debe desencriptarse para obtener la contraseña siendo el usuario de conexión Administrator.

Seleccionamos nuestra instancia Windows , vamos a la opción Connect y hacemos click en Get password.

Cargamos nuestro archivo continental.pem y click en Decrypt Password:

La siguiente ventana nos muestra el usuario y password que debemos usar para conectarnos por RDP (Remote Desktop Protocol) a la instancia Windows.

Conectarse a instancia con las credenciales de imagen anterior usando el cliente RDP de tu preferencia:

Verificar las llaves usadas en la instancia (ver metadata en instancia http://169.254.169.254/latest/meta-data/):

Comprobamos que la llave pública es la misma que obtenemos en instancias Linux.

En lugar de usar los key pairs generados por AWS también podemos crear los nuestros e importarlos a AWS . El desarrollo puede ser tratado en un futuro post.

Conclusiones:

  • Podemos usar las misma key pairs para diferentes tipos de instancias.
  • Las key pair nos brindan un alto nivel de seguridad siempre y cuando no sean compartidas con extraños.

Si encontraste útil el artículo por favor déjanos un aplauso. Síguenos en https://www.twitch.tv/awsugperu . Gracias por tu tiempo.

--

--