mongodb - 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 的情况下连接到堡垒服务器上的服务器时,我该怎么做?
解决方案
假设 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 地址,应该可以直接从本地机器访问
推荐阅读
- android - 认证成功后如何完成活动
- r - R: map_dfr + read_table() 中的编码选项
- stm32 - atollic stm32如何防止某些地方的flash闪退?
- java - 将一封电子邮件的数据保存到另一封电子邮件的错误
- php - 如何在 laravel 请求规则中包含空格和德语字符?
- sql-server - 将正确的函数应用于列中的子字符串
- node.js - 为什么 Axios 在 Express 中返回“绑定 consoleCall”?
- asp.net-mvc - 如何使用 streamwriter 覆盖文本文件
- java - 当 sizeof(long) 为 4 时,为什么我需要为 JNA 指针保留超过 4 个字节才能接收 long?
- swift - 无法将 NSNumber 类型的值转换为预期的参数类型 NSNumber