无法连接到私有子网中的 Redshift 集群

Can not connect to my Redshift cluster in private subnet

我已经使用 Linux Bastion Host Quick Start 上讨论的建议方法设置了 VPC。

我还在其中一个私有子网中创建了一个 Redshift 集群,并创建了没有规则限制的专用安全组。这是针对 Redshift 的入站和出站规则,我正在分配所有流量和端口 (0.0.0.0/0)。我什至对 public 子网上的 public EC2 实例做同样的事情。

我可以成功地通过 ssh 连接到我的 public 堡垒实例,但是我无法从那里远程登录到我的 Redshift 端点。

[ec2-user@ip-10-0-141-20 ~]$ telnet ******.redshift.amazonaws.com 5439
Trying 10.0.20.169...
Connected to ******.redshift.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.

我不确定我的配置有什么问题。在 Redshift 中,我禁用了 public 访问和 VPC 路由。

我假设你的情况是:

  • 您在私有子网中有一个 Amazon Redshift 集群
  • 您在同一 VPC
  • 的 public 子网中有一个 Bastion 服务器
  • 您希望将计算机上的 SQL 客户端连接到 Redshift 集群

一种方法是:

  • 使用端口转发通过堡垒主机连接到 Redshift 集群
  • 如果您使用的是 Linux/Mac:
ssh-add keypair.pem
ssh -A ec2-user@BASTION-IP -L 5439:xyz.redshift.amazonaws.com:5439

(这表示:将本地端口 5439 转发到堡垒,这里应该将流量发送到端口 5439 上的 Redshift 集群

  • 如果您正在使用 Windows,那么您可以使用 Pageant 和 PuTTY
  • 然后,配置您的 SQL 客户端以使用 server=localhostport=5439 连同您的登录凭据
  • 连接到 Redshift

如果上述方法不起作用,请检查一些事项:

  • Redshift 集群上的安全组应允许来自堡垒(或来自整个 VPC 或来自 0.0.0.0/0
  • 的端口 5439 上的 入站 连接
  • Bastion 上的出站 规则应保留允许所有出站流量的默认设置

如果问题仍然存在,您可以通过在 Bastion 上安装 psql 并尝试连接到 Redshift 来测试 Redshift 连接。 (Redshift 是从 PostgreSQL 派生出来的,所以它的行为类似)。