AWS EC2 SSH 隧道堡垒服务器

AWS EC2 SSH Tunnel Bastion Server

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

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

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

我想我知道我需要以某种方式连接到 Bastion 服务器,然后设置一个 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 的情况下无法连接到堡垒服务器上的服务器时,我该怎么办?

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

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 : ec2 实例托管的 IP 地址 MongoDB

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

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