从远程机器连接到RDS Postgres

时间:2013-12-06 19:36:55

标签: postgresql amazon-web-services

我已经配置了一个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 个答案:

答案 0 :(得分:12)

RDS设置向导的第4步("附加配置")让您选择数据库是否可公开访问(如果不是,则访问仅限于您的VPC内,无论如何您的安全组设置)。我想象一下,确定主机名是否解析为54. * vs 172. *。

您的第一个实例可能已设置为私有 - 据我所知,初始化后无法更改。我有一个类似的问题,创建一个可公开访问的新实例解决了它。

答案 1 :(得分:8)

我公司的防火墙阻止了默认postgres端口5432的传出流量。直到我在终端窗口中使用netcat测试端口,我才意识到这一点,如下所示:

nc -zv portquiz.net 5432

希望这可以节省半天用AWS安全组搞乱的人。

答案 2 :(得分:3)

绝对有。我在连接到我的RDS实例的本地计算机上加载了pgadmin。 |

我刚刚确认我可以使用与psql相同的语法进行连接,虽然-U对我来说不是必需的(尽管我仍然包含“示例”参数)

我编辑了“默认”安全组并添加了我的IP(我正在连接的机器的IP)/ 32被允许,虽然我确信你可以获得比这更少的限制,但我会从那里开始,看看它是否有帮助。

答案 3 :(得分:0)

这可能是由您的出站防火墙规则引起的。如果您位于公司防火墙后面,他们通常会阻止超出特定数量的出站端口。您需要设置某种SSH隧道以避免这种情况。 http://conoroneill.net/accessing-amazon-rds-instances-from-your-desktop/

答案 4 :(得分:0)

我有这个问题。这不是一个直接的解决方案,但可能适用于某些人。我将Postgres安全组设置为接受来自将使用它的服务器的连接(相同的VPC)。然后我设置我的Postgres客户端使用ssh隧道。如果我需要使用命令行,我只需通过SSH连接到该服务器,然后从那里psql

答案 5 :(得分:-1)

您可以简单地使用aws推荐的工作台,但是请确保将所有postgres都有效地设置为所有位置。.同时添加PostgrSQL 5432

https://aws.amazon.com/getting-started/tutorials/create-connect-postgresql-db/