我已配置RDS Postgres微示例进行测试,但连接时遇到问题。我已创建安全组并允许所有主机(0.0.0.0/0)默认连接到端口5432,但由于某种原因我无法连接。我尝试连接到机器上的端口5432,但它似乎已关闭。有什么想法吗?我已验证安全组正在使用正确的安全组。
这是我的配置
TCP
Port (Service) Source Action
5432 0.0.0.0/0 Delete
下面是我尝试连接到rds服务的方法
psql -p 5432 -h example.cs945smhrv09.us-west-2.rds.amazonaws.com -U example example
- 更新**
好吧,在弄清楚RDS是在私有172子网上启动的之后,我觉得有点傻。我能够从我的EC2示例连接。
现在的问题是,有没有办法把它放在一个公共地址,我可以连接到?我想配置它与一个安全组,限制源ip,但然后能够连接到它与psql从我的桌面。
- 更新2**
我不记得我最初发布这个问题时的所有细节,但现在它不再是一个问题。我们现在有一个管理vpc,我们使用vpn服务器连接到它。管理vpc网络被rds示例的prod和devel安全组信任。我们在不添加任何公共ip的情况下与他们通信没有问题。
6条答案
按热度按时间6ovsh4lw1#
RDS设置向导的第4步(“Additional Config”)允许您选择DB是否可公开访问(如果不是,则访问仅限于您的VPC内,无论您的安全组设置如何)。我想这将决定主机名解析为54.* 还是172.*。
你的第一个示例可能已经被设置为私有--据我所知,这在初始化后是无法改变的。我有一个类似的问题,创建一个新的示例设置为公共访问解决了这个问题。
5ktev3wc2#
我公司的防火墙阻止了到默认postgres端口5432的传出流量。直到我在终端窗口中使用netcat测试该端口时,我才意识到这一点,如下所示:
希望这能节省人们半天的时间来摆弄AWS安全组。
cvxl0en23#
当然有。我在连接到RDS示例的本地机器上加载了pgadmin。|
我刚刚确认可以使用与psql相同的语法进行连接,尽管-U对我来说不是必需的(尽管我仍然包含了两个“example”参数)
我确实编辑了“默认”安全组,并添加了我的IP(我正在连接的机器的IP)/32以允许,尽管我相信您可以得到比这更少的限制,但我会从那里开始,看看它是否有帮助。
tkclm6bt4#
这可能是由于您的出站防火墙规则造成的。如果您位于企业防火墙之后,他们通常会阻止超过一定数量的出站端口。您需要设置某种类型的SSH隧道来避免这种情况。http://conoroneill.net/accessing-amazon-rds-instances-from-your-desktop/
ozxc1zmp5#
我遇到了这个问题。这不是一个直接的解决方案,但可能对一些人有用。我设置Postgres安全组接受来自将使用它的服务器(同一个VPC)的连接。然后我设置我的Postgres客户端使用ssh隧道。如果我需要使用命令行,我只需SSH到该服务器,然后从那里
psql
。h9a6wy2h6#
您可以简单地使用aws推荐的工作台,但请确保您的所有postgres availibily设置为无处不在。
https://aws.amazon.com/getting-started/tutorials/create-connect-postgresql-db/