Contenido del curso

Fundamentos de la Infraestructura Global de AWS

Servicios de cómputo en AWS

Almacenamiento en AWS

Seguridad en AWS

Costos en AWS

Cómo aprobar la certificación AWS Cloud Practitioner

Conexión SSH a servidores privados en AWS

Resumen

Conectarte a instancias EC2 dentro de una subred privada exige un salto controlado a través de un Bastion Host (Jumphost), reglas de Security Group bien definidas y una instalación limpia de Apache en cada servidor. Aquí entenderás el flujo paso a paso para que tu arquitectura quede lista antes de montar el balanceador de carga en AWS.

Cómo configurar el Security Group del Jumphost para acceso SSH

El primer paso es habilitar la entrada por SSH al servidor que actuará como puente hacia las instancias privadas. Sin esa regla, no hay forma de iniciar la cadena de conexión.

Desde la consola de EC2, entra a Instances running, selecciona tu Jumphost y abre la pestaña Security. Ahí editas las reglas de entrada y agregas una nueva con estos parámetros:

  • Tipo: SSH.
  • Origen: MyIP, que crea un rango /32 con tu IP pública.
  • Acción: guardar.

Con eso, solo tu equipo puede tocar el puerto 22 del Jumphost. Es una práctica básica de mínimo privilegio que reduce la superficie de ataque desde internet [01:46].

¿Qué es un Jumphost en AWS? Es una instancia EC2 pública que sirve como punto único de entrada para administrar servidores que viven en subredes privadas. Tú entras al Jumphost por SSH y desde ahí saltas al resto.

Cómo conectarte por SSH desde tu terminal

Una vez guardada la regla, abre tu terminal y ubica la llave .pem que descargaste. El flujo en Mac o Linux es idéntico:

  1. Entra a la carpeta de la llave con cd downloads.
  2. Ajusta permisos con chmod 400 jumphost.pem.
  3. Copia la Public IPv4 address del Jumphost desde la consola.
  4. Ejecuta ssh ec2-user@IP -i jumphost.pem y responde yes.

El comando chmod 400 es obligatorio porque AWS rechaza llaves con permisos abiertos. Sin ese paso, recibes un error de permisos antes de iniciar la sesión [03:30].

Cómo permitir tráfico desde el Jumphost al Security Group privado

Llegar al Jumphost no basta. Las instancias privadas tienen su propio Security Group, y debes autorizar explícitamente el tráfico que viene desde el Jumphost hacia ellas.

La forma más limpia es referenciar Security Group ID contra Security Group ID, no IPs. Así, si la IP del Jumphost cambia, la regla sigue funcionando.

El procedimiento concreto es:

  • Copia el ID del Security Group del Jumphost.
  • Abre el Security Group de las instancias privadas (en el ejemplo, el terminado en 2203).
  • Edita las reglas de entrada y agrega una regla SSH cuyo origen sea ese ID copiado.
  • Guarda los cambios.

Con esa regla, el Security Group privado acepta conexiones SSH solo si vienen del Jumphost. Cualquier otro origen queda descartado [05:55].

¿Por qué usar Security Group ID en lugar de IP? Porque vincula la regla a la identidad lógica del recurso. Si reemplazas la instancia o cambia su IP, la autorización persiste sin tocar configuración.

Cómo hacer el salto SSH al servidor privado e instalar Apache

Dentro del Jumphost necesitas la llave del servidor privado para completar el salto. La forma directa es crear un archivo .pem nuevo y pegar el contenido de la llave original.

Usa sudo vim llave-server-a.pem, presiona i para insertar, pega el contenido que abriste con un editor como Sublime y guarda con Escape, :wq. Después aplica sudo chmod 400 llave-server-a.pem para asegurar la llave.

Luego copia la Private IPv4 del servidor A desde la consola y arma la cadena:

sudo ssh ec2-user@IP-privada -i llave-server-a.pem

Si olvidas el sudo, aparece permission denied. Ese error es tu primer ejercicio de troubleshooting: el sistema operativo Linux exige privilegios para leer la llave en esa ruta [09:15].

Cómo instalar el servidor web Apache y crear el index.html

Ya dentro del servidor A, instalas Apache con un único comando y creas la página que servirá como prueba.

Los pasos son:

  1. sudo yum install httpd -y para instalar el paquete.
  2. sudo vim /var/www/html/index.html para crear el archivo.
  3. Escribir Hola, amigos de Platzi. Soy el servidor A y guardar con :wq.
  4. Reiniciar el servicio con sudo systemctl restart httpd.

La ruta /var/www/html es el document root por defecto de Apache en Amazon Linux. Cualquier archivo que dejes ahí se sirve por HTTP cuando el servicio está activo [11:34].

¿Qué hace systemctl restart httpd? Reinicia el demonio de Apache para que tome los cambios de configuración o contenido recién agregados. Sin ese reinicio, el servidor sigue sirviendo la versión anterior.

Para el servidor B repites exactamente el mismo flujo: creas llave-server-b.pem en el Jumphost, ajustas permisos, saltas con ssh ec2-user@IP-privada -i llave-server-b.pem, instalas httpd y editas el index.html con el mensaje Hola, soy el servidor web, amigos de Platzi. Cada instancia queda con contenido distinto, lo que después permitirá comprobar que el balanceador alterna tráfico entre ambas [13:50].

Qué habilidades técnicas se ponen en práctica en este laboratorio

Este ejercicio combina varias destrezas que todo administrador de infraestructura en AWS debería dominar.

  • Gestión de Security Groups con referencias cruzadas entre IDs.
  • Uso de Bastion Host para acceso seguro a subredes privadas.
  • Manejo de llaves .pem y permisos con chmod 400.
  • Troubleshooting básico de errores SSH como permission denied y command not found.
  • Instalación y reinicio de servicios con yum y systemctl.

¿Ya replicaste el laboratorio en tu cuenta de AWS? Cuéntame en los comentarios qué error te apareció primero y cómo lo resolviste.