我已经使用Linux堡垒主机快速入门中讨论的建议方法设置了一个VPC。
我还在其中一个私有子网中创建了一个 Redshift 集群,并创建了没有规则限制的专用安全组。这是针对 Redshift 的入站和出站规则,我正在分配所有流量和端口 (0.0.0.0/0(。我什至对公有子网上的公有 EC2 实例执行相同的操作。
我可以成功地通过 ssh 连接到我的公共堡垒实例,但从那里我无法远程登录到我的 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 中,我禁用了公有访问和 VPC 路由。
我假设你的情况是:
- 您在私有子网中有一个 Amazon Redshift 集群
- 您在同一 VPC 的公有子网中有一个堡垒服务器
- 您希望将计算机上的 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=localhost
和port=5439
以及您的登录凭据连接到 Redshift
如果上述方法不起作用,请检查以下事项:
- Redshift 集群上的安全组应允许端口 5439 上来自堡垒(或整个 VPC 或
0.0.0.0/0
的入站连接 - 堡垒上的出站规则应保持其默认设置,即允许所有出站流量
如果仍然出错,您可以通过在堡垒上安装psql
并尝试连接到 Redshift 来测试 Redshift 连接。(Redshift是从PostgreSQL分叉而来的,所以它的行为类似(。