隧道到红移簇

Sau*_*ngh 4 tunnel amazon-ec2 amazon-web-services ssh-tunnel amazon-redshift

我是红移新手。目前,我可以创建一个 redshift 集群并通过 SQL Workbench 连接它,但我期待着ssh从我的 MAC 终端隧道化我的 redshift 集群。我做了一些研究,并能够创建一个具有相同 VPC ID 和子网组的 ec2 实例,我用它来创建 Redshift 集群。我也已经在我的 ec2 实例上安装了 psql。当我使用 psql 命令连接到 redshift 时,我无法理解哪里出了问题:

psql -h my redshift endpoint -p 5439 -d database name -U user -c " my query "
Run Code Online (Sandbox Code Playgroud)

它给我错误 psql: 无法将主机名“my redshift端点”翻译为地址: 名称或服务未知

Joh*_*ein 5

第一步是使用隧道连接到 EC2 实例ssh,并使用将本地端口转发到远程端口的命令:

ssh -i KEYPAIR.pem -L 5439:REDSHIFT-ENDPOINT:5439 ec2-user@EC2-PUBLIC-IP
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • KEYPAIR.pem应该是用于访问 EC2 实例的密钥对的名称
  • REDSHIFT-ENDPOINT是 Redshift 端点的 DNS 名称
  • EC2-PUBLIC-IP是 EC2 实例的 IP 地址

这个命令说:

  • 使用密钥对创建 ssh 连接
  • 将发送到本地端口 5439 的任何流量转发到远程计算机,然后让远程计算机将该流量发送到REDSHIFT-ENDPOINT:5439(用您的端点替换REDSHIFT-ENDPOINT

然后,您可以连接到 Redshift,localhost:5439就像它在您自己的计算机上运行一样。该流量将被发送到远程计算机,远程计算机会将其发送到REDSHIFT-ENDPOINT:5439.

例如,如果您想使用psql连接到 Redshift,请使用:

psql -h localhost -p 5439 -U <username>
Run Code Online (Sandbox Code Playgroud)