如何通过SSH隧道从本地环境访问Neptune Database?
本地通过SSH隧道访问VPC内Neptune数据库操作指引
前置确认项
操作前先确认以下信息:
- Neptune数据库的内网访问端点(格式通常为
xxx.cluster-xxx.xxx.neptune.amazonaws.com),Gremlin服务默认端口为8182 - EC2跳板机的公网IP/域名、登录用户名
- 已确认EC2跳板机的安全组出方向允许访问Neptune的
8182端口,Neptune安全组入方向允许来自EC2内网IP的8182端口访问(你已经可以在EC2上访问Gremlin服务,说明该配置已生效)
方案1:SSH本地端口转发(无需负载均衡,操作最简)
该方案直接通过EC2作为跳板转发流量,适合临时本地访问场景,操作步骤如下:
- 本地终端执行端口转发命令,命令格式如下:
ssh -L <本地自定义端口>:<Neptune内网端点>:<Neptune端口> <EC2登录用户名>@<EC2公网地址>
示例:如果你本地要使用8182端口对接Neptune,EC2用户为ec2-user、公网IP为1.2.3.4,命令为:
ssh -L 8182:my-neptune.cluster-abc123.us-east-1.neptune.amazonaws.com:8182 ec2-user@1.2.3.4
- 命令执行完成后保持SSH会话不关闭,本地即可通过
https://localhost:<你设置的本地端口>访问Neptune服务,可通过请求https://localhost:8182/status验证连通性,正常会返回Neptune的节点状态信息。
可选优化
如果需要让SSH隧道在后台运行,不需要保持终端窗口开启,可在命令中添加-fN参数:
ssh -fN -L 8182:my-neptune.cluster-abc123.us-east-1.neptune.amazonaws.com:8182 ec2-user@1.2.3.4
不需要使用隧道时,找到对应的ssh进程终止即可。
方案2:结合现有Network Load Balancer转发(适合多用户长期访问)
如果你需要多人同时访问Neptune,不想每人单独配置Neptune端点,可以用已有的NLB做中间转发:
- 先在AWS控制台配置NLB的TCP监听,监听端口设为
8182,目标组绑定Neptune的内网端点8182端口,确保NLB的安全组允许访问Neptune的对应端口 - 本地执行隧道命令时,将目标地址替换为NLB的VPC内网端点即可:
ssh -L 8182:<NLB内网端点>:8182 ec2-user@1.2.3.4
后续Neptune端点变更时,仅需修改NLB目标组配置,无需调整所有用户的本地隧道命令。
注意事项
- Neptune默认开启SSL认证,本地访问时需使用HTTPS协议,部分Gremlin客户端默认发起HTTP请求会报错,需手动调整为HTTPS
- 如果本地
8182端口被占用,可替换为任意未使用的本地端口,访问时对应调整端口即可 - Windows 10及以上系统默认自带SSH客户端,直接在PowerShell或Git Bash中执行上述命令即可生效
内容的提问来源于stack exchange,提问作者Saurabh kr. Gupta
相关产品推荐
相关产品推荐

