sábado, abril 05, 2014

Conectar a Linux EC2 Amazon por Consola en Clientes Windows

Introducción
Los servidores Linux EC2 de Amazon, no utilizan un "user" y "password" para autenticarse, en vez de ello utilizan llaves de crifrado públicas y privadas. Cuando se crea una instancia EC2, en el proceso se debe crear un par de estas llaves. EC2 almacena la llave pública y le envía la llave privada al usuario (descarga archivo PEM).

Cuando se conecta a una instancia por consola, el cliente o consola usa la llave privada para generar la firma o credencial y se envía a EC2, quien usa la llave pública que guardó anteriormente para verificar que la firma es correcta.

Por lo tanto, es importante que cuando se crea la instancia y el par de llaves, la llave privada (PEM) no debe perderse.
PUTTY
El programa Putty utiliza una estructura diferente para la información de la llave privada, esta se guarda en un archivo PPK. Ya que EC2 utiliza PEM, lo que se debe hacer es crear el PPK equivalente. De la siguiente forma:
1) Utilizar aplicación PuttyGen

2) Cargar llave PEM

En PuttyGen, oprimir botón "Load" y en cuadro de diálogo, se debe seleccionar "Todos los archivos" en Tipo, que por defecto aparece seleccionado filtrando los archivos de tipo PPK. Al hacer esto, debiera aparecer el archivo PEM que se descargó al crear la instancia EC2 (poner cuidado en el cuadro de diálogo que el directorio mostrado corresponda al lugar donde se almacenó el archivo PEM)

3) Apenas se selecciona el archivo PEM y se pulsa "Abrir", PuttyGen genera el equivalente OpenSSH SSH-2 RSA e indica que se debe usar "Save private key" para guardar esta información en el formato Putty (PPK)

4) Luego de dar "Aceptar" a la notificación anterior, queda en la interfaz de PuttyGen la información cargada que se generó. Tal como decía la notificación, se pulsa "Save private key" para guardar la llave privada en formato PPK. Nótese que están los campos "Key passphrase" y "Confirm passphrase" en blanco. Llenarlos depende de cómo se generó la llave privada originalmente al crear la instancia EC2.

5) Si los campos para "passphrase" se encuentran en blanco, al pulsar "Save private key" aparecerá un cuadro de confirmación alertando esta situación. Pulsar "SI" para continuar con los campos de "passphrase" en blanco. Aparecerá el cuadro de diálogo para guardar la información y se debe ingresar el nombre del par de llaves (Key Pair Name) original, sin extensión, Putty agrega en forma automática la extensión PPK. Tener cuidado de seleccionar un nombre existente de la lista, sólo para después modificar la extensión o agregar algo adicional, una vez que se selecciona un nombre, la aplicación asume que se quiere reemplazar el archivo existente y alerta de esta situación.

6) Para probar la conexión por consola, se debe tomar en cuenta el DNS Público de la instancia y el usuario de conexión (generalmente "ec2-user"). Ahora se debe utilizar la aplicación Putty



En el campo Host Name, escribimos la URL de conexión con formato "user@dns_public". En Port usamos 22, y en Connection Type, seleccionamos SSH. Opcionalmente, puede guardarse esta configuración dando un nombre en el campo "Saved Sessions" y pulsando el botón "Save". Al volver a conectar, se selecciona la sesión de la lista y se pulsa "Load". Pero eso no es todo, falta indicarle a Putty, qué llave usar.
7) En las opciones de configuración de la izquierda de la interfaz anterior, ir a Connection -> SSH -> Auth.



Pulsar el botón "Browse..." en la derecha y buscar el archivo PPK antes generado, y eso es todo. Oprimir "Open" para establecer la conexión.
SSH Secure Shell Client
Este cliente para SSH utiliza otro formato para las llaves privadas. Pero el proceso es similar a con Putty. Eso sí, que necesitaremos nuevamente a PuttyGen.

1) Utilizar aplicación PuttyGen

2) Cargar llave PEM

En PuttyGen, oprimir botón "Load" y en cuadro de diálogo, se debe seleccionar "Todos los archivos" en Tipo, que por defecto aparece seleccionado filtrando los archivos de tipo PPK. Al hacer esto, debiera aparecer el archivo PEM que se descargó al crear la instancia EC2 (poner cuidado en el cuadro de diálogo que el directorio mostrado corresponda al lugar donde se almacenó el archivo PEM)

3) Apenas se selecciona el archivo PEM y se pulsa "Abrir", PuttyGen genera el equivalente OpenSSH SSH-2 RSA e indica que se debe usar "Save private key" para guardar esta información en el formato Putty (PPK)

4) Luego de dar "Aceptar" a la notificación anterior, queda en la interfaz de PuttyGen la información cargada que se generó. Ahora, a diferencia de generar la llave privada PPK para Putty, debemos convertirla a otro formato. Esto lo hacemos desde la opción "Export ssh.com key" en el menú "Conversions" de PuttyGen. Al seleccionar esta opción, nuevamente nos alertará si los campos para "passphrase" están en blanco. Llenarlos depende de cómo se generó la llave privada originalmente al crear la instancia EC2. Decimos que "SI" para continuar y se abrirá el cuadro de diálogo para almacenar la llave privada en el nuevo formato. Escribimos el nombre del par de llaves (Key Pair Name) original, sin extensión. Tener cuidado de seleccionar un nombre existente de la lista, sólo para después modificar la extensión o agregar algo adicional, una vez que se selecciona un nombre, la aplicación asume que se quiere reemplazar el archivo existente y alerta de esta situación.

5) Si vemos la información generada, veremos que ahora tenemos un archivo sin extensión que contiene nuestra llave privada. Luego, en la interfaz pulsamos el botón "Save public key" para guardar la llave pública en formato PUB. En el cuadro de diálogo para guardar la información, nuevamente escribimos el nombre del par de llaves (Key Pair Name) original, pero esta vez agregamos la extensión ".pub"
6) La aplicación SSH Secure Shell Client guarda sus llaves en el directorio "Application Data\SSH\UserKeys" que se encuentra en la carpeta del usuario de windows. Allí se deben copiar las dos llaves generadas anteriormente, el archivo sin extensión y el archivo PUB.
7) Al abrir la aplicación SSH Secure Shell Client se debe crear un perfil de conexión, en "Profiles" (opción que se encuentra bajo la barra de menúes)



Al seleccionar "Add Profile...", sólo se crea el nombre para el perfil. Luego, se debe seleccionar "Edit Profile..." para agregar la configuración.
8) Aquí se agrega la información para Host Name (escribir el DNS Público de la instancia EC2), el usuario (generalmente "ec2-user") y en Port number, ingresar 22. Se pulsa OK, para guardar la información
9) Para conectarse, se selecciona el perfil creado y se realiza la conexión.

2 comentarios:

Mauro dijo...

Gracias Cheivier, super buen artículo. Me ayudó bastante.
Estuve a punto de sacar a pasear la jirafa rosada del patio. :)

Anónimo dijo...

Buena Info...
saludos!