¿Cómo puedo utilizar un túnel SSH a través de AWS Systems Manager para acceder a mis recursos VPC privados?

6 minutos de lectura
0

Quiero utilizar un túnel SSH a través de AWS Systems Manager para acceder a mis recursos VPC privados. ¿Cómo puedo hacerlo?

Descripción breve

Para crear un túnel SSH, puede utilizar el administrador de sesiones, una función de AWS Systems Manager que le permite utilizar el reenvío de puertos para hosts remotos. Esta característica es compatible con las versiones 3.1.1374.0 y posteriores del agente SSM. El reenvío de puertos es una alternativa a los pasos siguientes. Para obtener más información sobre el reenvío de puertos de host remoto, consulte Iniciar una sesión.

El administrador de sesiones utiliza la infraestructura de Systems Manager para crear una sesión de tipo SSH con una instancia. El administrador de sesiones establece conexiones SSH reales, lo que le permite acceder por túnel a otro recurso dentro de su nube virtual privada (VPC) directamente desde su máquina local. Una instancia gestionada creada por usted actúa como host bastión, o puerta de enlace, a sus recursos de AWS.

Las ventajas de esta configuración son:

  • Mayor seguridad: Esta configuración utiliza solo una instancia de Amazon Elastic Compute Cloud (Amazon EC2) (el host bastión) y conecta el puerto de salida 443 a la infraestructura de Systems Manager. Esto le permite utilizar el administrador de sesiones sin ninguna conexión entrante. El recurso local debe permitir el tráfico entrante solo desde la instancia que actúa como host bastión. Por lo tanto, no es necesario abrir ninguna regla de entrada públicamente.
  • Facilidad de uso: Puede acceder a los recursos de su VPC privada directamente desde su máquina local.

Nota: Para obtener instrucciones para acceder a sus instancias de EC2 con un terminal o un reenvío de puerto único mediante Systems Manager, consulte Configuración del administrador de sesiones.

Requisitos previos

Complete los requisitos previos del administrador de sesiones

Instale el complemento del administrador de sesiones para la interfaz de la línea de comandos de AWS (AWS CLI)

Permita las conexiones SSH a través del administrador de sesiones y asegúrese de que se cumplen los requisitos de conexión SSH.

Nota: Debe tener instalado lo siguiente para utilizar la característica SSH:

  1. Agente SSM v2.3.672.0 o posterior.

  2. Complemento del administrador de sesiones v1.1.23 o posterior en su máquina local.

  3. AWS CLI v1.16.12 o posterior en su máquina local.

Resolución

Para iniciar el túnel SSH utilizando el administrador de sesiones, siga estos pasos:

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

  1. Para iniciar el túnel SSH, ejecute el siguiente comando:
ssh -i /path/my-key-pair.pem username@instance-id -L localport:targethost:destport
  1. Para comprobar el acceso al túnel en el puerto de destino creado en el paso 1, ejecute el siguiente comando:
telnet 127.0.0.1 localport

En el ejemplo anterior, 127.0.0.1 y localport se traducen para acceder a targethost:destport.

Configuraciones de ejemplo

Situación 1

Cree un túnel desde su máquina local para acceder a una base de datos MySQL que se ejecuta en una instancia de EC2 utilizando el host SSM como host bastión.

Recursos utilizados

instancia1: Una instancia de EC2 que actúa como host bastión y que gestiona AWS Systems Manager.

Nombre de host = ec2-198-51-100-1.compute-1.amazonaws.com Id de instancia = i-0123456789abcdefa

instancia2: Una instancia de EC2 que ejecuta la base de datos MySQL en el puerto predeterminado 3306.

Nombre de host = ec2-198-51-100-2.compute-1.amazonaws.com

Instrucciones

  1. Desde una máquina local (por ejemplo, su portátil), ejecute el comando SSH para conectarse a la instancia1, utilizando SSH basado en el administrador de sesiones. Este comando establece un túnel hacia el puerto 3306 en instancia2, y lo presenta en la máquina local en el puerto 9090.
ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 9090:ec2-198-51-100-2.compute-1.amazonaws.com:3306

Nota: En el ejemplo anterior, el puerto 9090 está disponible en la máquina local.

  1. Desde la máquina local, acceda a la base de datos utilizando el puerto disponible utilizado en el paso 1 (en este ejemplo, 9090).
mysql -u user -h 127.0.0.1 -P 9090 -p password

Nota: Cualquier grupo de seguridad, lista de control de acceso de la red (ACL de red), reglas de seguridad o software de seguridad de terceros que exista en instancia2 debe permitir el tráfico desde instancia1. En el ejemplo anterior, instancia2 debe permitir el acceso al puerto 3306 desde instancia1.

Situación 2

Cree tres túneles sobre una única conexión SSH desde su máquina local a:

  • Conéctese al puerto SSH en instancia1
  • Acceda a una base de datos MySQL en una instancia RDS
  • Acceda a un servidor web en instancia3

Recursos utilizados

instancia1: Una instancia de EC2 que actúa como host bastión y que gestiona AWS Systems Manager.

Nombre de host = ec2-198-51-100-1.compute-1.amazonaws.com Id de instancia = i-0123456789abcdefa

Instancia RDS: Una instancia RDS de MySQL ubicada en una subred privada.

Nombre de host = DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com

instancia3: Una instancia de EC2 ubicada en una subred privada

Nombre de host = ec2-198-51-100-3.compute-3.amazonaws.com

Instrucciones

  1. Inicie la sesión con tres túneles utilizando el comando SSH.

Nota: Hay tres invocaciones de túnel separadas en el comando.

ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 8080:ec2-198-51-100-1.compute-1.amazonaws.com:22 -L 9090:DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com:3306 -L 9091:ec2-198-51-100-3.compute-1.amazonaws.com:80

Nota: En el ejemplo anterior, los puertos 8080, 9090 y 9091 están disponibles en la máquina local.

  1. Acceda mediante SSH desde la máquina local a instancia1. El puerto local 8080 hace de túnel con el puerto SSH (22) en instancia1. El par de claves y el nombre de usuario corresponden a la instancia a la que está haciendo el túnel (instancia1, en este ejemplo).
ssh -i /path/key-pair_instance1.pem username_of_instance1@127.0.0.1 -p 8080
  1. Acceda a la base de datos en la instancia RDS. El puerto local 9090 hace de túnel con el puerto 3306 de la instancia RDS. Puede utilizar MySQL Workbench, que le permite acceder al servidor de bases de datos mediante la interfaz gráfica de usuario, con 127.0.0.1 como nombre de host y 9090 como puerto. O bien, ejecute el siguiente comando en la línea de comandos del shell:
mysql -u user -h 127.0.0.1 -P 9090 -p password
  1. Desde la máquina local, para acceder al sitio web de instancia3, abra el navegador y acceda al sitio web.
http://127.0.0.1:9091

Importante: Todos los grupos de seguridad, ACL de red, reglas de seguridad o software de seguridad de terceros que existan en la instancia RDS y en instancia3 deben permitir el tráfico desde instancia1. En el ejemplo anterior, instancia3 debe permitir el acceso al puerto 80 desde instancia1.


Información relacionada

Configuración automatizada del administrador de sesiones sin puerta de enlace de Internet

session-manager-without-igw

Conéctese con seguridad a una instancia de base de datos de Amazon RDS o Amazon EC2 de forma remota con su interfaz gráfica de usuario de preferencia

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año