我在私有子网中有 AWS Postgres 实例,但我没有任何 VPN,如何通过本地访问它?

I have AWS Postgres instance in private subnet and I don't have any VPN, How Can I access it through Local?

我在私有子网下有一个 Postgres 实例,我没有配置 VPN 进行连接,即使我的 Bastion(跳转节点)不允许这样做。 有没有办法通过我的本地机器将它连接到测试开发?

默认端口为 5432。 我可以通过堡垒节点 ssh 访问我的应用程序服务器。

因为您可以通过 Bastion ssh 访问您的应用程序服务器。 然后您可以创建两级 ssh 隧道代理。由于 Postgres 不允许通过 Bastion 节点,只能通过应用服务器。

1:创建应用服务器到堡垒节点的隧道。

ssh-add ~/.ssh/id_rsa ;ssh -oStrictHostKeyChecking=no -Att -l USER_NAME 堡垒 IP ssh -oStrictHostKeyChecking=no -Att -l USER_NAME APP_SERVER_IP -L 5432:AWS_POSTGRESS_END_POINT:5432

(保持打开此终端)

2:创建另一个从 Bastion 到本地计算机的隧道: (打开新终端)

ssh-add ~/.ssh/id_rsa ;ssh -oStrictHostKeyChecking=no -Att -l USER_NAME BASTION_IP-L5432:localhost:5432 (保持打开此终端)

3:在连接字符串中使用本地主机或 127.0.0.1 和 5432 端口(从本地计算机连接)而不是 Postgress 端点。

注意:用粗体突出显示的文本替换正确的 ssh 密钥路径和您的用户名。并保持打开两个终端以保持会话。

端口转发 是一个过程,您可以在其中建立从您的计算机(在 Internet 上)到堡垒服务器的连接,然后 转发 到数据库的流量。

ssh -i key.pem ec2-user@BATION-IP -L 5432:DATABASE-DNS-NAME:5432

然后,在您的 SQL 客户端中,通过以下方式连接到数据库:

localhost:5432

当 SQL 客户端转到本地计算机上的端口 5432 时,SSH 连接会将流量转发到堡垒服务器,然后堡垒服务器会将其发送到:DATABASE-DNS-NAME:5432

(您实际上可以在本地使用任何端口号。例如,您可以创建多个到不同数据库的转发连接,每个都在不同的端口上。)