首页 > 解决方案 > AWS EC2 SSH 隧道堡垒服务器

问题描述

试图了解这是如何工作的,文档不是很清楚。使用 AWS quickstart-mongo,我正在为 3 个 Mongo 节点制作一个 VPN,并带有一个堡垒服务器。我可以通过 SSH 和我的密钥登录我的堡垒服务器。然后我可以将密钥复制到堡垒服务器和 SSH 到主副本节点。该节点正在运行 mongo,并通过 rs.status() 显示所有 3 个节点都在正常运行。

登录堡垒服务器后,我尝试执行此操作curl primary-mongo-node-ip:27017,但它似乎挂起。

本地计算机 -> 堡垒服务器 -> 副本节点 1 / 2 / 3

我想我知道我需要以某种方式连接到堡垒服务器,然后设置一个 ssh 转发到 primary-mongo-node-ip:27017, sec1-mongo-node-ip:27017, sec2-mongo-node-ip:27017,这样我的 mongo URI 连接如下所示:

SSH 进入 bastion-dns mongodb://user:pass@localhost:1000,localhost:1001,localhost:1002/database

当我无法在没有 SSH 的情况下连接到堡垒服务器上的服务器时,我该怎么做?

标签: mongodbamazon-web-servicessshssh-tunnel

解决方案


假设 Mongo 实例允许来自 Bastion 主机(在安全组中)的流量用于所需端口,您可以使用 SSH 隧道机制从本地主机访问集群/实例:

ssh -N -L <local_port_x>:<mongoDB instance ip>:<mongo_port_y> <ssh_username>@<bastion_host_ip> -i <ssh_key_path>

Local_Port_X:您要访问远程 Mongo 实例的本地计算机上的端口

MongoDB Instance IP: 用于托管 MongoDB 的 ec2 实例的 IP 地址

Mongo_Port_Y:MongoDB 正在侦听的端口(从您的问题看来是 27017 - 请确认您可以在此端口上的堡垒主机内与 Mongo 实例通信)

Bastion_Host_Ip: 堡垒主机上的 IP 地址,应该可以直接从本地机器访问


推荐阅读