通过代理从个人电脑访问公共PostgreSQL服务器(AmazonRDS)
我是亚马逊网络服务 (AWS) 的新手。
我已经从 AWS RDS 创建了一个 PostgreSQL:
- 端点:database-1.XXX.rds.amazonaws.com
- 端口:5432
- 公共可访问性:是
- 可用区:ap-northeast-1c
之后,我会将使用数据库的应用程序推送到 AWS(可能部署到 EKS)。
但是,我想先尝试从本地计算机测试数据库服务器。
我还没有尝试在家里的笔记本电脑上进行测试,但我认为它会连接正常,因为我的笔记本电脑没有使用 HTTP 代理连接到网络。
问题是我想尝试从我公司的 PC 上进行测试,这需要设置 HTTP 代理才能连接到 Internet。电脑规格:
- 视窗 10
- 安装 PostgreSQL 10
首先,我尝试使用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 Tunnel”输入代理:
但是,将显示错误消息:
那么,任何人都可以帮助建议我们是否可以通过 HTTP 代理连接到公共 PostgreSQL 服务器?
回答
我认为问题是 Postgres 使用普通的 TCP/IP 协议,而您正在尝试使用 HTTP 代理。此外,您正在尝试针对无法工作的 HTTP 代理服务器创建SSH 隧道。
所以我建议以下解决方案:
- 使用 TCP 代理代替 HTTP 代理
- 创建一个 EC2 或任何可以从您的公司网络进行 SSH 访问并可以访问公共 Internet 的实例。这样您就可以通过该实例创建 SSH 隧道来实现您的目标。
注意:确保您的 PostgreSQL 可以从公共互联网访问(虽然这通常是个坏主意,但它超出了这个问题的范围)有时安全组配置会阻止它从公共互联网连接。
THE END
二维码