Quiero usar un host bastión para conectarme a mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2) que se ejecuta en una subred privada.
Descripción corta
Las instancias de Linux de EC2 utilizan archivos de pares de claves SSH en lugar de nombres de usuario y contraseñas SSH como método de autenticación predeterminado. Para conectarte mediante un host bastión, usa el reenvío de ssh-agent en el cliente. ssh-agent conecta a un administrador del bastión a otra instancia sin necesidad de utilizar una clave privada del bastión.
De forma predeterminada, la mayoría de las distribuciones de Linux y macOS incluyen el paquete openssh-clients que contiene ssh-agent. Para las distribuciones de Windows, usa PuTTY para conectarte a instancias de Linux y Pageant para administrar las claves privadas. Tras instalar Pageant, podrás usar la opción de reenvío de agentes en PuTTY para conectarte a instancias de subredes privadas.
Importante: Para mantener un entorno seguro, no almacenes nunca las claves privadas en el host bastión.
Resolución
Nota: ssh-agent se ejecuta en la memoria, por lo que debes repetir los pasos siguientes cada vez que abras una nueva sesión de terminal o reinicies el equipo.
Requisitos previos: Asegúrate de que la configuración tenga los siguientes atributos:
- El host bastión se encuentra en la subred pública de la nube virtual privada (VPC).
- El grupo de seguridad de la instancia en la subred privada solo permite conexiones SSH desde el host bastión.
- El grupo de seguridad del host bastión permite conexiones SSH en el puerto TCP/22 únicamente desde direcciones IP conocidas y de confianza.
Configuración del reenvío de ssh-agent en un cliente macOS o Linux
Sigue estos pasos:
-
Ejecuta el siguiente comando para iniciar ssh-agent en segundo plano.
eval $(ssh-agent)
-
Ejecute el siguiente comando para añadir la clave SSH a ssh-agent:
ssh-add "/path/to/key.pem"
Nota: Sustituye path/to/key por la ruta al archivo .pem de tu máquina local. ssh-agent almacena las claves SSH en la memoria.
-
Ejecuta el siguiente comando para comprobar que ssh-agent haya almacenado la clave:
ssh-add -l
Nota: Verifica que la clave aparezca en la salida.
Resultado de ejemplo:
# 2048 SHA256:abc123... /home/user/.ssh/my-key.pem (RSA)
-
Ejecuta el siguiente comando para conectarte al host bastión con el reenvío de ssh-agent activado:
ssh -A User@Bastion_Host_IP_Address
Nota: Sustituye Usuario por tu nombre de usuario y Bastion_Host_IP_address por la dirección IP de tu host bastión. Para ver el nombre de usuario predeterminado de tu imagen de máquina de Amazon (AMI), consulta Nombres de usuario predeterminados. Para usar el reenvío de ssh, usa la marca**-A** en lugar de la marca**-i**. Con ssh-agent, SSH usa automáticamente las claves que estén cargadas en la memoria.
-
Ejecuta el siguiente comando para conectarte a la instancia privada de Linux:
ssh User@Private_instance_IP_address
Nota: Sustituye Usuario por tu nombre de usuario y Private_instance_IP_address por la dirección IP de tu instancia.
Configuración del reenvío de agentes en un cliente Windows
Sigue estos pasos:
- Descarga e instala PuTTY, Pageant y PuTTYgen. Para descargar las herramientas, consulta Download PuTTY (Descargar PuTTY) en el sitio web de PuTTY.
- Para usar PuTTY para conectarte a la instancia, usa PuTTYgen para convertir la clave privada del formato PEM al formato PuTTY.
Nota: PuTTY no puede usar el formato PEM para las claves SSH.
- Selecciona el menú Inicio y, a continuación, abre Pageant.
Nota: De forma predeterminada, Pageant se abre minimizado en la bandeja del sistema. Si no ves el icono de Pageant en la bandeja del sistema, usa la configuración de la barra de tareas para añadirlo. Para obtener instrucciones, consulta Personalizar la barra de tareas en Windows en el sitio web de Microsoft.
- Para añadir tus claves SSH, abre el menú contextual (haz clic con el botón derecho), busca el icono de Pageant y, a continuación, selecciona Añadir clave. Luego, ve a tu clave privada.
Nota: Para ver la clave añadida, abre el menú contextual (haz clic con el botón derecho), busca el icono de Pageant y, a continuación, selecciona Ver claves.
- Selecciona el menú Inicio y, a continuación, abre Todos los programas.
- Elige PuTTY y, a continuación, elige PuTTY.
- En Categoría, selecciona Sesión.
- En Nombre de host, introduce user-name@instance-public-dns para conectarte al nombre de DNS público de tu instancia. O bien, introduce user-name@instance-IPv4-address para conectarte a la dirección IPv4 de tu instancia.
Nota: Sustituye user-name por tu nombre de usuario, instance-public-dns por el DNS público de la instancia e instance-IPv4-address por la dirección IPv4 de la instancia.
- Configura los valores de Tipo de conexión y SSH según tus requisitos. En Puerto, escribe 22.
- En Categoría, expande Conexión.
- Elige SSH y, a continuación, selecciona Autenticación.
- Selecciona Permitir el reenvío de agentes.
- Selecciona Abrir.
- Para conectarte a la instancia, ejecuta el siguiente comando:
ssh User@Private_instance_IP_address
Nota: Sustituye Usuario por tu nombre de usuario y Private_instance_IP_address por la dirección IP de tu instancia.