如何通过SSH隧道将pgAdmin连接至AWS私有RDS数据库?
错误原因
你的配置逻辑存在根本问题。私有RDS未开放公网/本地直连路径,你当前操作的设备根本无法直接访问********-**-****.***********.eu-central-1.rds.amazonaws.com:5432地址。
此前psql连接能成功,核心是你先通过SSH命令把RDS实例的5432端口映射到了本地设备的1234端口,psql实际连接的是本机1234端口的转发流量,并非直连RDS。你在pgAdmin中直接填写RDS端点+5432端口,相当于让客户端跳过隧道直接访问根本不通的RDS地址,必然触发连接报错。
正确配置方案
你可以选以下任意一种方式配置,两种都能正常连通:
方案1:用pgAdmin内置SSH隧道(推荐,无需手动维持终端窗口)
新建pgAdmin服务器连接,按两个标签页分别填参数即可:
- 「Connection(连接)」标签页:
- Host name/address(主机名/地址):填写RDS实例端点
********-**-****.***********.eu-central-1.rds.amazonaws.com - Port(端口):填写RDS原生端口
5432 - Maintenance database(维护数据库):填写目标数据库名
[dbname] - Username(用户名):填写RDS数据库账号
[username] - Password(密码):填写对应数据库账号的正确密码
- Host name/address(主机名/地址):填写RDS实例端点
- 「SSH Tunnel(SSH隧道)」标签页:
- 勾选*Use SSH tunneling(使用SSH隧道)*选项
- Tunnel host(隧道主机地址):填写跳板EC2的公网地址
ec*-*-***-**-***.eu-central-1.compute.amazonaws.com - Tunnel port(隧道端口):保持默认22即可
- Username(登录用户名):填写EC2的登录账号
ec2-user - Authentication(认证方式):选择Identity file(身份密钥文件)
- Identity file(密钥文件路径):选择本地存储的
************-dev.pem密钥文件的完整本地路径
所有参数填完保存即可直接连接,不需要提前手动打开终端执行SSH建隧道命令。
方案2:保留手动开SSH隧道的使用习惯
如果你还是习惯先在终端执行以下命令建隧道:ssh -N -L 1234:********-**-****.***********.eu-central-1.rds.amazonaws.com:5432 ec2-user@ec*-*-***-**-***.eu-central-1.compute.amazonaws.com -i "************-dev.pem"
那pgAdmin的「Connection(连接)」标签页要按以下规则填写,绝对不能填RDS端点:
- Host name/address(主机名/地址):必须填
localhost或127.0.0.1 - Port(端口):填写本地隧道映射端口
1234,不能填5432 - 其余数据库名、用户名、密码参数,正常填写RDS对应的账号信息即可
注意:该方案下,执行SSH建隧道命令的终端窗口不能关闭,关闭后隧道会直接中断,pgAdmin连接也会断开。
内容的提问来源于stack exchange,提问作者Karina Shulan
相关产品推荐
相关产品推荐

