¿Cómo uso un túnel SSH para conectarme a mi clúster de Amazon DocumentDB desde fuera de Amazon VPC?
Quiero acceder a un clúster de Amazon DocumentDB (compatible con MongoDB) que esté implementado en una instancia de Amazon Virtual Private Cloud (Amazon VPC). Quiero usar un túnel SSH para acceder al clúster desde fuera de Amazon VPC.
Descripción corta
Si quieres utilizar un túnel SSH para reenviar el tráfico de tu máquina local al clúster de Amazon DocumentDB, usa una instancia de Amazon Elastic Compute Cloud (Amazon EC2) como bastión o host de salto. El host bastión actúa como un proxy que reenvía el tráfico desde tu máquina local al clúster de Amazon DocumentDB.
Resolución
La siguiente solución usa una instancia de EC2 como host bastión. El host bastión utiliza el cliente de interfaz de la línea de comandos (CLI) de MongoDB para conectarse al clúster de Amazon DocumentDB desde una máquina local a través de un túnel SSH.
Requisitos previos:
- Crea un clúster de Amazon DocumentDB.
- Lanza una instancia con una dirección IP pública en la misma instancia de Amazon VPC que el clúster de Amazon DocumentDB.
- Asocia un par de claves privadas (archivo.pem) a la instancia que descargaste en tu máquina local.
- Asocia un grupo de seguridad al clúster de Amazon DocumentDB. El grupo de seguridad permite la comunicación desde la instancia a través del puerto que está configurado con el clúster de Amazon DocumentDB (27017 predeterminado).
- Asocia un grupo de seguridad a la instancia. El grupo de seguridad permite la comunicación desde tu máquina local a través del puerto SSH (22).
- Instala MongoDB Shell o un cliente GUI en tu máquina local.
Confirmación de que se puede acceder al clúster de Amazon DocumentDB desde el host bastión de Amazon EC2
Usa el par de claves privadas para conectarte al host del bastión desde tu máquina local a través de SSH:
ssh -i path_to_pem_file instance-user-name@instance-public-dns-name
Nota: Sustituye path_to_pem_file por la ruta del archivo de claves .pem. Sustituye instance-user-name por el nombre de usuario de tu instancia. Sustituye instance-public-dns-name por el nombre DNS público o la dirección IP de la instancia.
Para obtener más información, consulta Conexión a la instancia de Linux mediante un cliente de SSH.
Para autenticar el clúster, descarga el certificado de la autoridad de certificación (CA) para Amazon DocumentDB:
wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
Usa el cliente CLI de MongoDB para conectarte al clúster de Amazon DocumentDB:
mongo --tls --host cluster-endpoint --tlsCAFile global-bundle.pem --username primary-username --password master-password
Nota: Sustituye cluster-endpoint por el punto de enlace del clúster de DocumentDB. Sustituyeprimary-username por el nombre de usuario principal de la base de datos. Sustituye primary-password por la contraseña principal de la base de datos.
Para obtener más información, consulta Conexión mediante Amazon EC2.
Configuración del túnel SSH
Después de verificar la conexión al clúster desde un host bastión, configura el túnel SSH.
Para configurar un túnel SSH desde tu máquina local hasta un host bastión, ejecuta un comando similar al del siguiente ejemplo:
ssh -i path_to_pem_file -L local-port:cluster-endpoint:remote-port instance-user-name@instance-public-dns-name -N -f
Nota: Sustituye path_to_pem_file por la ruta hacia el archivo de clave privada de la instancia de EC2. Sustituye local-port por el número de puerto que quieres usar en tu máquina local. Sustituye cluster-endpoint por el punto de enlace del clúster de base de datos. Sustituye remote-port por el número de puerto de la base de datos remota.
En el siguiente ejemplo, el túnel SSH vincula el puerto 27017 de la máquina local al clúster remoto de Amazon DocumentDB:
ssh -i "ec2Access.pem" -L 27017:sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 ec2-user@ec2-zz-aaa-yyy-zzz.compute-1.amazonaws.com -N -f
En el comando del ejemplo anterior se utilizan las siguientes opciones de línea de comandos:
- i identity_file, usa el par de claves privadas de la instancia (archivo.pem) para la autenticación.
- L port:host:hostport, vincula el puerto del host local (cliente) para reenviar el tráfico al puerto de host del host remoto.
- N, no ejecuta un comando remoto. Esto solo es útil cuando se reenvían puertos.
- f, ejecuta el SSH para ejecutarlo en segundo plano.
Para comprobar que el túnel SSH se ejecuta en segundo plano, ejecuta un comando similar al del siguiente ejemplo.
**Nota:**Sustituye local-port por tu número de puerto.
Linux y macOS:
lsof -P | grep -i "listen" | grep local-port
Windows:
netstat -abn | findstr "LISTEN" | findstr local-port
Nota: Debes ser un usuario administrador para ejecutar el comando anterior en Windows.
Para confirmar que el host local escucha en el puerto local 27017, ejecuta el siguiente comando:
nc -zv 127.0.0.1 27017
Revisa el resultado. Si el túnel SSH se ha establecido correctamente, verás un resultado similar al del siguiente ejemplo:
❯ lsof -P | grep -i "listen" | grep 27017ssh 52787 user 7u IPv4 0x1256bbb543454447 0t0 TCP localhost:27017 (LISTEN) ❯ netstat -abn | findstr "LISTEN" | findstr 27017TCP 127.0.0.1:27017 0.0.0.0:0 LISTENING ❯ nc -zv 127.0.0.1 27017Connection to 127.0.0.1 port 27017 [tcp/*] succeeded!
El ejemplo anterior usa el puerto 27017.
Conexión al clúster de Amazon DocumentDB desde la máquina local
Usa el shell de MongoDB o un cliente de GUI para conectarte al clúster de Amazon DocumentDB desde tu máquina local.
Nota: Antes de iniciar la conexión, descarga el certificado de CA para Amazon DocumentDB en tu máquina local.
Para usar la conexión de MongoDB Shell al clúster de Amazon DocumentDB, ejecuta el siguiente comando:
mongo --tls --tlsAllowInvalidHostnames --tlsCAFile global-bundle.pem --username primary-username --password primary-password
Nota: Sustituye primary-username por el nombre de usuario de la base de datos. Sustituye primary-password por la contraseña de la base de datos.
El comando del ejemplo anterior no especifica explícitamente los parámetros --host y --port. Si no especificas los parámetros --host y --port, MongoDB Shell intentará conectarse al host local de tu máquina en el puerto local 2701. A continuación, el túnel SSH reenvía la conexión al punto de enlace del clúster de Amazon DocumentDB.
Cuando utilices un puerto que no sea 27017 en tu máquina local, usa el parámetro --port para especificar explícitamente el puerto personalizado. Para obtener más información, consulta Conexión a una implementación en un host remoto en el sitio web de MongoDB.
Consideraciones importantes
Revisa las siguientes consideraciones:
- Algunos clientes de GUI tienen una opción de túnel SSH, como MongoDB Compass o Studio 3T. Cuando usas estos clientes, no necesitas crear y administrar manualmente el túnel SSH con la CLI de MongoDB. En su lugar, guarda la configuración del túnel SSH en la configuración de conexión del cliente GUI. Para obtener más información, consulta la documentación de tu cliente de GUI específico.
- Cuando necesites omitir la validación de nombres de host SSL/TLS, usa el parámetro --tlsAllowInvalidHostnames para conectarte a través de un túnel SSH. El nombre de host de la cadena de conexión, mongodb://localhost:27017, no coincide con el nombre de host que figura en el certificado del servidor de clústeres de Amazon DocumentDB. Si te conectas directamente al clúster con un punto de enlace de clúster de Amazon DocumentDB, no necesitarás usar el parámetro --tlsAllowInvalidHostnames.
- Si usas clientes de GUI como MongoDB Compass y Studio 3T, especifica la opción tlsAllowInvalidHostnames en la cadena de conexión, tlsAllowInvalidHostnames=true. O bien, activa la opción **Allow Invalid Hostnames** en la configuración de conexión de la pestaña SSL/TLS.
- Cuando usas un túnel SSH para conectarte, es recomendable que te conectes al punto de enlace del clúster. Si especificas replicaSet=rs0 en la cadena de conexión, es posible que se produzca un error. Cuando utilices MongoDB Compass para el túnel SSH, activa la conexión directa para desactivar la conexión del conjunto de réplicas. Para obtener más información, consulta la pestaña Conexión general en el sitio web de MongoDB.
Información relacionada
Conexión a un clúster de Amazon DocumentDB desde fuera de una Amazon VPC
¿Qué es MongoDB Compass? en el sitio web de MongoDB
- Temas
- Database
- Etiquetas
- Amazon DocumentDB
- Idioma
- Español

Contenido relevante
- preguntada hace 7 meses
- preguntada hace un año
- preguntada hace un año
- preguntada hace un mes
- preguntada hace un año
OFICIAL DE AWSActualizada hace 8 meses