Como uso um túnel SSH para me conectar ao meu cluster do Amazon DocumentDB de fora de uma Amazon VPC?
Quero acessar um cluster do Amazon DocumentDB (compatível com MongoDB) implantado em uma Amazon Virtual Private Cloud (Amazon VPC). Quero usar um túnel SSH para acessar o cluster de fora da Amazon VPC.
Breve descrição
Para usar um túnel SSH para encaminhar o tráfego da sua máquina local para o cluster Amazon DocumentDB, use uma instância do Amazon Elastic Compute Cloud (Amazon EC2) como bastion host ou jump host. O bastion host atua como um proxy que encaminha o tráfego da sua máquina local para o cluster Amazon DocumentDB.
Resolução
A resolução a seguir usa uma instância do EC2 como bastion host. O bastion host usa o cliente da interface de linha de comandos (CLI) do MongoDB para se conectar ao cluster Amazon DocumentDB a partir de uma máquina local por meio de um túnel SSH.
Pré-requisitos:
- crie um cluster do Amazon DocumentDB.
- Execute uma instância com um endereço IP público na mesma Amazon VPC do cluster do Amazon DocumentDB.
- Associe um par de chaves privadas (arquivo .pem) à instância que você baixou em sua máquina local.
- Associe um grupo de segurança ao cluster Amazon DocumentDB. O grupo de segurança permite a comunicação da instância pela porta configurada com o cluster Amazon DocumentDB (padrão 27017).
- Associe um grupo de segurança à instância. O grupo de segurança permite a comunicação de sua máquina local pela porta SSH (22).
- Instale o MongoDB Shell ou um cliente GUI em sua máquina local.
Confirme se o cluster do Amazon DocumentDB está acessível a partir do bastion host do Amazon EC2
Use o par de chaves privadas para se conectar ao bastion host a partir de sua máquina local por meio de SSH:
ssh -i path_to_pem_file instance-user-name@instance-public-dns-name
Observação: substitua path_to_pem_file pelo caminho do seu arquivo de chave .pem. Substitua instance-user-name pelo nome de usuário da sua instância. Substitua instance-public-dns-name pelo nome DNS público ou endereço IP da sua instância.
Para obter mais informações, consulte Conectar-se à instância do Linux usando um cliente SSH.
Para autenticar seu cluster, baixe o certificado de autoridade de certificação (CA) no Amazon DocumentDB:
wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
Use o cliente da CLI do MongoDB para se conectar ao cluster do Amazon DocumentDB:
mongo --tls --host cluster-endpoint --tlsCAFile global-bundle.pem --username primary-username --password master-password
Observação: substitua cluster-endpoint pelo endpoint do seu cluster do DocumentDB. Substitua primary-username pelo nome de usuário primário do seu banco de dados. Substitua primary-password pela senha mestra do seu banco de dados.
Para obter mais informações, consulte Connect using Amazon EC2 (Conecte-se usando o Amazon EC2).
Configure o túnel SSH
Depois de verificar a conexão com o cluster a partir de um bastion host, configure o túnel SSH.
Para configurar um túnel SSH da sua máquina local para um bastion host, execute um comando semelhante ao exemplo a seguir:
ssh -i path_to_pem_file -L local-port:cluster-endpoint:remote-port instance-user-name@instance-public-dns-name -N -f
Observação: substitua path_to_pem_file pelo caminho para o arquivo de chave privada da sua instância do EC2. Substitua local-port pelo número da porta que você deseja usar em sua máquina local. Substitua cluster-endpoint pelo endpoint do seu cluster de banco de dados. Substitua remote-port pelo número da porta do seu banco de dados remoto.
No exemplo a seguir, o túnel SSH vincula a porta 27017 da máquina local ao cluster remoto do 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
As seguintes opções de linha de comandos são usadas no exemplo de comando anterior:
- i identity_file, usa o par de chaves privadas na instância (arquivo .pem) para autenticação.
- L port:host:hostport, vincula a porta no host local (cliente) para encaminhar o tráfego na porta do host remoto.
- N, não executa um comando remoto. Ele é útil somente quando você encaminha portas.
- f, executa o SSH para ser executado em segundo plano.
Para verificar se o túnel SSH é executado em segundo plano, execute um comando semelhante ao exemplo a seguir.
Observação: substitua local-port pelo número da sua porta.
Linux e macOS:
lsof -P | grep -i "listen" | grep local-port
Windows:
netstat -abn | findstr "LISTEN" | findstr local-port
Observação: você precisa ser um usuário administrador para executar o comando anterior no Windows.
Para confirmar se o host local recebe na porta local 27017, execute o seguinte comando:
nc -zv 127.0.0.1 27017
Analise a saída. Se o túnel SSH for estabelecido com êxito, você verá uma saída semelhante ao exemplo a seguir:
❯ 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!
O exemplo anterior usa a porta 27017.
Conecte-se ao cluster do Amazon DocumentDB a partir de sua máquina local
Use o MongoDB Shell ou um cliente de GUI para se conectar ao cluster do Amazon DocumentDB a partir de sua máquina local.
Observação: antes de iniciar a conexão, baixe o certificado CA no Amazon DocumentDB em sua máquina local.
Para usar o MongoDB Shell para se conectar ao cluster do Amazon DocumentDB, execute o seguinte comando:
mongo --tls --tlsAllowInvalidHostnames --tlsCAFile global-bundle.pem --username primary-username --password primary-password
Observação: substitua primary-username pelo nome de usuário do seu banco de dados. Substitua primary-password pela senha do seu banco de dados.
O exemplo de comando anterior não especifica explicitamente os parâmetros --host e --port. Quando você não especifica os parâmetros --host e --port, o MongoDB Shell tenta se conectar ao host local da sua máquina na porta local 2701. Em seguida, o túnel SSH encaminha a conexão para o endpoint do cluster do Amazon DocumentDB.
Ao usar uma porta diferente de 27017 em sua máquina local, use o parâmetro --port para especificar explicitamente a porta personalizada. Para obter mais informações, consulte Conectar-se a uma implantação em um host remoto no site do MongoDB.
Considerações importantes
Analise as seguintes considerações:
- Alguns clientes GUI têm uma opção de túnel SSH, como MongoDB Compass ou Studio 3T. Ao usar esses clientes, você não precisa criar e gerenciar manualmente o túnel SSH com a CLI do MongoDB. Em vez disso, salve a configuração do túnel SSH nas configurações de conexão do cliente GUI. Para obter mais informações, consulte o artigo do seu cliente GUI específico.
- Quando você precisar ignorar a validação do nome de host SSL/TLS, use o parâmetro --tlsAllowInvalidHostnames para se conectar por meio de um túnel SSH. O nome do host na string de conexão, mongodb://localhost:27017, não corresponde ao nome do host que está no certificado do servidor de cluster do Amazon DocumentDB. Se você se conectar diretamente ao cluster com um endpoint de cluster do Amazon DocumentDB, não precisará usar o parâmetro --tlsAllowInvalidHostnames.
- Para clientes GUI, como MongoDB Compass e Studio 3T, especifique a opção tlsAllowInvalidHostnames na string de conexão, tlsAllowInvalidHostnames=true. Ou ative a opção **Allow Invalid Hostnames** nas configurações de conexão na guia SSL/TLS.
- Quando você usa um túnel SSH para se conectar, é uma prática recomendada conectar-se ao endpoint do cluster. Se você especificar replicaSet=rs0 em sua string de conexão, poderá ocorrer um erro. Ao usar o MongoDB Compass para o túnel SSH, ative a Conexão direta para desativar a conexão do conjunto de réplicas. Para obter mais informações, consulte a Aba conexão geral no site do MongoDB.
Informações relacionadas
Conectar-se a um cluster do Amazon DocumentDB de fora de uma Amazon VPC
O que é o MongoDB Compass? no site do MongoDB
- Tópicos
- Database
- Idioma
- Português

Conteúdo relevante
- feita há 8 meses
AWS OFICIALAtualizada há 8 meses