首页 > 解决方案 > 通过代理从个人计算机访问公共 PostgreSQL 服务器 (Amazon RDS)

问题描述

我是亚马逊网络服务 (AWS) 的新手。
我已经从 AWS RDS 创建了一个 PostgreSQL:

之后,我会将使用数据库的应用程序推送到 AWS(可能部署到 EKS)。
但是,我想先尝试从本地计算机测试数据库服务器。

我还没有尝试在家中使用我的笔记本电脑进行测试,但我认为它可以正常连接,因为我的笔记本电脑没有使用 HTTP 代理连接到网络。

问题是我想尝试从我的公司 PC 上进行测试,这需要设置 HTTP 代理才能连接到 Internet。电脑规格:

首先,我尝试使用psql命令行:

psql -h database-1.XXXX.rds.amazonaws.com -U postgre
>  Unknown host

set http_proxy=http://user:password@my_company_proxy:3128
set https_proxy=http://user:password@my_company_proxy:3128
psql -h database-1.XXXX.rds.amazonaws.com -U postgre
>  Unknown host

set http_proxy=http://my_second_company_proxy:3128
set https_proxy=http://my_second_company_proxy:3128
psql -h database-1.XXXX.rds.amazonaws.com -U postgre
>  Unknown host

然后,我尝试使用 pgAdmin 工具。

在此处输入图像描述

来自互联网帖子,它说我们可以使用“SSH隧道”来输入代理:

在此处输入图像描述

但是,将显示错误消息:

在此处输入图像描述

那么,任何人都可以帮助建议我们是否可以通过 HTTP 代理连接到公共 PostgreSQL 服务器?

标签: windowspostgresqlamazon-web-servicesproxypsql

解决方案


我认为问题是 Postgres 使用普通的 TCP/IP 协议,而您正在尝试使用 HTTP 代理。此外,您正在尝试针对您的 HTTP 代理服务器创建SSH 隧道,但这是行不通的。

所以我建议以下解决方案:

  1. 使用 TCP 代理而不是 HTTP 代理
  2. 创建一个 EC2 或任何可以从您的公司网络进行 SSH 访问并可以访问公共 Internet 的实例。这样您就可以通过该实例创建 SSH 隧道来实现您的目标。

注意:确保您的 PostgreSQL 可以从公共互联网访问(虽然这通常是个坏主意,但它超出了这个问题的范围)有时安全组配置会阻止它从公共互联网连接。


推荐阅读