Cristian Mendoza
Si alguien elimino el NAT Gateway para preveer costos durante el curso, este es necesario para descargar el servidor web.
La clase es: Crear una VPC en AWS (Creación de Subredes, Internet Gateway y NAT Gateway)
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:
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:
cd downloads.chmod 400 jumphost.pem.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:
2203).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:
sudo yum install httpd -y para instalar el paquete.sudo vim /var/www/html/index.html para crear el archivo.Hola, amigos de Platzi. Soy el servidor A y guardar con :wq.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.
chmod 400.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.
Cristian Mendoza
Si alguien elimino el NAT Gateway para preveer costos durante el curso, este es necesario para descargar el servidor web.
La clase es: Crear una VPC en AWS (Creación de Subredes, Internet Gateway y NAT Gateway)
Ruben Galindo
El comando chmod 400 establece permisos de lectura solo para el propietario del archivo, mientras que los demás no tienen ningún permiso. Esto significa que solo el propietario puede leer el archivo y no puede ser modificado o ejecutado por otros.
Por otro lado, chmod +x agrega permiso de ejecución para todos los usuarios (propietario, grupo y otros).
En resumen, chmod 400 y chmod +x tienen propósitos diferentes: el primero restringe el acceso y el segundo permite la ejecución.
Sebastián Arcila Sánchez
Para recordar: No es posible conectarse directamente a serverA (o serverB) usando conexión SSH es porque no cuentan con una IP pública. Para conectarse a una instancia EC2 se necesita que la instnacia tenga una IP pública. Por eso se usa el JumpHost.
Santiago Ahumada Lozano
Tengan cuidado siempre de compartir o mostrar sus llaves privadas, ya que estas son la forma en la que SSH desencripta el acceso al servidor usando una llave pública.
Santiago Ahumada Lozano
Aunque creo que no hay problema pues chmod 400 obliga a que este tipo de accesos solo los haga el usuario actual
Juan Diego Rosero Calvachi
Si los archivos de la llave son .ppk, que es el formato utilizado por PuTTY, no se pueden usar directamente como llaves para conectar a instancias de AWS. Necesitarás convertir el archivo .ppk a .pem. Para ello, puedes utilizar PuTTYgen, que es una herramienta que permite realizar esta conversión. Una vez convertido a .pem, podrás usarlo para conectarte a tus instancias de EC2 mediante SSH.
Andrés Felipe Rivera Aguilar
Un camino mas sencillo sin NAT es usar Endpoitn al servicio de S3 donde pueden descargar los repos. com.amazonaws.us-east-1.s3
Patricia Hernandez Navarro
Super Genial el profesor
Jose Alejandro Pantoja Giraldo
Con esta clase me senti hacker xD
jhon.ochoa
Pregunta, aplicando lo visto en clases anteriores...no se pudo agregar los comandos de instalación del servidor web, creación del index.html y el mensaje en cada Ec2 creada con datos de usuario(User Data)? Entiendo que el ejemplo del profe es poder tener una Ec2 para mantenimiento e instalación, pero con esto nos hubiéramos ahorrado una Ec2
Ejemplo de Usar Data:
#!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<h2>Hola Servidor (A o B )desde $(hostname -f)</h2>" > /var/www/html/index.html
Samir Jimenez Vivas
Para un primer inicio lo que el profe hace se me hace mucho, pero entiendo que es de ejemplo nada más. Yo lo haría como dices tú.
ANDRES IVAN CANAL CARRILLO
me podrian ayudar cuando soy sudo yum install httpd -y no descarga el servidor y me da error de errors during downloading metadata for repository , cual podria ser el error
Omar David Prudente Carrillo
al intentar conectarme desde PuTTY de jumpHost a servera me sigue dando el error: Permission denied , ya corri el script con sudo y persiste
Julio Castañeda
Hola. Puede que necesites especificar la ruta donde esta la llave en mi caso la agregue y funciono: ssh ec2-user@10.0.1.169 -i /home/ec2-user/llaveservera.pem
Santiago Ahumada Lozano
Excelente explicación
Daniel Sanchez
uff buenisimo! me encanto esta clase