所以这对我来说真的很新,如果这是一个愚蠢的问题,我们深表歉意。
我有一个RDS实例,该实例不可公开访问,并且位于其自己的专用VPC中。我有一个允许连接到RDS的EC2实例,但没有其他任何东西可以连接到该实例。
我现在希望PgAdmin能够显示我的RDS实例中的数据。
我经历了PgAdmin中的向导,我将EC2实例的公共IP作为隧道主机,用户名是ec2-user
,身份验证是通过身份文件(使用我用于ssh进入实例的pem文件)。
但是,我仍然无法连接。在“高级”选项卡中,PGAdmin要求提供主机地址,但在放入RDS实例的端点时会抱怨。
我如何让本地pgAdmin现在访问不再可以通过公共Internet访问的数据库?
-忘记添加错误信息
Unable to connect to server:
Failed to create the SSH tunnel.
Error: Could not establish session to SSH gateway
似乎您希望将Amazon EC2实例与端口转发一起使用,以访问同一VPC中的私有Amazon RDS实例。
这是我配置此类连接的方式。
首先,请确认您可以通过SSH进入EC2实例。您将使用类似于以下命令:
ssh -i key.pem ec2-user@IP-ADDRESS
如果以上方法有效,请修改SSH命令以使用端口转发:
ssh -i key.pem -L 5432:RDS-HOST-NAME:5432 ec2-user@IP-ADDRESS
这将通过SSH将您自己计算机上的端口5432转发到EC2实例。然后,发送到localhost:5432
的所有流量都将通过SSH连接转发。然后,EC2实例会将流量发送到RDS-HOST-NAME:5432
。 (用RDS数据库的DNS名称替换RDS-HOST-NAME
。)
在PgAdmin中,将数据库称为:localhost:5432
当然,您可以在端口转发连接中使用其他端口号。如果将多个连接转发到不同的数据库,这将很有用。但是,如果可能,我希望保持它们不变。
为了使用PgAdmin中的SSH隧道]重现您的情况,我执行了以下操作:
10.0.0.0/16
(VPC的CIDR)在5432上进行入站访问ec2-user
它已成功连接。
如果它为您挂起,请检查安全组
允许来自EC2实例的传入连接。