AWS EC2: Desde la Creación hasta la Conexión con SSH
Tags: aws, ec2, linux, ssh
Published: 2023-09-12 22:14:20

En esta oportunidad, vamos a crear una instancia EC2 de Linux en AWS y estableceremos una conexión desde nuestro computador local utilizando SSH.

Empezaremos accediendo al servicio de EC2 en AWS desde la consola. Puedes utilizar la barra de búsqueda o quizás encuentres EC2 entre los servicios más utilizados. Un consejo adicional es marcar los servicios que más utilizas como favoritos para facilitar el acceso.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xl0hvv8bn5gtcpelc4ui.png)

¡Exacto! Una vez que estemos dentro del servicio, seleccionamos la opción "Instancias" ubicada en el menú de la columna izquierda y luego presionamos el botón "Lanzar Instancia". ¿Verdad que es bastante intuitivo?


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bynscsdm7hlc644uf1r5.png)

Dentro de los siguientes pasos para lanzar nuestras instancias, encontramos los siguientes:

1. Asignar un nombre a la instancia. En mi caso, la nombré **my_instance**.
2. Seleccionar una imagen, que es básicamente el sistema operativo que tendrá nuestra instancia, junto con algunas configuraciones predeterminadas. Por ahora, nos centraremos en la elección del sistema operativo.
3. Escoger la versión. Para este tutorial, opté por la imagen Amazon Linux 2023 y una arquitectura de 64 bits (x86).


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0kdvov6p67h7lh83ymq.png)

Continuemos con los pasos restantes:

4 Seleccionamos el tipo de instancia. En este tutorial, optaremos por la t2.micro, que se encuentra en la capa gratuita. Sin embargo, ten en cuenta que, según los requisitos de tu aplicación, puedes optar por otro tipo de instancia, teniendo en cuenta los costos asociados.

5 Crearemos un par de claves como método de seguridad para establecer la comunicación entre nuestra instancia y nuestro computador. Estas claves consisten en una clave pública y una clave privada.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kl2g3po8qulyo717ze27.png)

Cuando optemos por crear un nuevo par de claves, deberemos asignar un nombre a este conjunto de claves. Elegiremos el tipo RSA y el formato del archivo será un .pem, ya que estamos utilizando Linux en este tutorial. Al presionar el botón "Crear par de claves", se descargará un archivo que contiene la clave privada. Es importante destacar que esta clave privada no debe compartirse con nadie y se suele guardar en el directorio ~/.ssh, así guárdalo alli como buena practica.

En cuanto a la clave pública, esta se generará automáticamente y quedará dentro de nuestra instancia. Cuando intentemos establecer una conexión, esta clave pública coincidirá con nuestra clave privada para permitir el acceso seguro.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32rflgafcvmiuzqghshq.png)

6 Crear un grupo de seguridad: Este paso es de suma importancia, ya que en este grupo definirás qué tipo de tráfico puede entrar o salir de tu instancia. Para este tutorial, seleccionaremos únicamente SSH, ya que nuestro objetivo es establecer una comunicación segura entre nuestro computador y la instancia. Sin embargo, si deseamos desplegar una aplicación web, este grupo de seguridad deberá permitir el tráfico HTTP y HTTPS, además del SSH. En mi caso, el grupo se llama "launch-wizard-4". Si es la primera vez que lo creas, se denominará "launch-wizard-1".


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hi7zx1ltmzrr5rcighr0.png)

Con estos simples pasos, estamos listos para lanzar nuestra instancia. Ahora, simplemente presionamos el botón "**Lanzar instancia**".

Nuestra instancia tomará unos pocos minutos para estar disponible y en ejecución. A partir de ese momento, podemos proceder a establecer la conexión desde nuestro computador.

## Establecer conexión con SSH
1. Abriremos nuestra terminal o linea de comandos CLI para conectarnos
Lo primero que hare es ubicarme en el directorio ~/.ssh donde guarde mis llaves prvadas y hare un ls para ver las llaves que tengo guardades

```
cd ~/-shh
ls
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/df8g4s09yrbi2rmsglxz.png)

¡Excelente! Estás listo para establecer la conexión SSH. Asegúrate de tener lo siguiente a mano:

- Tu par de claves (la clave privada .pem).
- El nombre de usuario de la instancia, que por defecto es "ec2-user".
- La dirección IP pública de tu instancia, que encontrarás seleccionando la instancia creada en la consola de AWS, en la sección de detalles bajo "Dirección IPv4 pública".

Con estos elementos, podrás conectarte a tu instancia de EC2 de forma segura. ¡Continuemos!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jp5xasdfn1gqn7tf5lcs.png)

Entonces comenzamos ejecutando el siguiente código en la terminal:

```
ssh -i keys_tutorial ec2-user@3.133.112.193
```
En teoría, todo debería funcionar, pero la seguridad de Amazon ha detectado que nuestra clave privada tiene permisos que no son los adecuados. Por razones de seguridad, se requiere que un archivo como este solo sea legible por el usuario o el creador.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i344bzqul4xhhn26mx8w.png)

Nuestro archivo está desprotegido o permite el acceso a personas o grupos que no deberían tenerlo. Echemos un vistazo a los permisos:

```
ls -l
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nkzwjpq5hgd7wd9nk5i0.png)

Podemos observar que nuestra llave privada "keys_tutorial" tiene permisos de lectura y escritura (rw) para el usuario, lo cual es correcto, aunque con lectura es suficiente, Sin embargo, también tiene permisos de lectura (r) para el grupo y otros, lo cual AWS detecta como un riesgo de seguridad.

corrijamos esto cambiando los permisos:

```
chmod 400 keys_tutorial.pem
```
Estamos estableciendo permisos de lectura (r) solo para el usuario, y no se están otorgando permisos para grupos y otros usuarios. Veamos ahora los permisos de la clave privada:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ft8lh1x0swy1swrikfao.png)

Excelente, ahora que nuestra clave privada tiene únicamente permisos de lectura para el usuario, podemos proceder a ejecutar nuevamente nuestro comando de conexión de forma segura:

```
ssh -i keys_tutorial ec2-user@3.133.112.193
```

ejecutamos y observemos la respuesta...


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/morrj4po0nhjsyei0iir.png)

¡Excelente! Como dicen en las famosas películas de hackers, "¡Estamos dentro!" Has logrado conectarte a tu instancia con éxito.

Espero que hayas disfrutado de este tutorial y que haya sido útil. Si tienes alguna pregunta adicional o necesitas más información, no dudes en dejar un comentario o compartir esta información con quienes puedan necesitarla. ¡Feliz administración de tu instancia EC2 en AWS!