我在尝试设置 SSH 隧道以通过堡垒 ec2 实例连接到私有 RDS Aurora 集群时遇到了困难。
当我在我的 python 脚本和 pgadmin 中使用 RDS 端点解析到的私有 IP 时,它工作正常。 但是,如果我从私有 IP 更改为实际的 RDS 端点 (..us-west-2.rds.amazonaws.com),我的脚本和 pgadmin 都不会连接。他们给出超时错误。
供参考: db_ip = RDS 的 ip 或端点,bastion_endpoint = ec2 实例的端点,bastion_user = ec2-user,key_path = 身份密钥文件的路径
with sshtunnel.SSHTunnelForwarder(
(bastion_endpoint, 22),
ssh_username=bastion_user,
ssh_private_key=key_path,
remote_bind_address=(db_ip, 5432),
local_bind_address=('', 5433)) as server:
奇怪的是,当我使用 powershell 直接打开 SSH 隧道时:
ssh -i <identity key> -f -N -L 5433:<rds ip>:5432 ec2-user@<ec2 endpoint> -v
然后运行psql:
psql -hlocalhost -U<user> -p5433 -d <database>
Psql 连接很快。
但是,如果我换到端点:
ssh -i <identity key> -f -N -L 5433:<rds endpoint>:5432 ec2-user@<ec2 endpoint -v
psql -hlocalhost -U<user> -p5433 -d <database>
Psql 连接...最终。在询问密码之前需要几分钟,然后再给我提示需要几分钟。
我可能配置不正确吗?据我所知,一切都设置好了。就像它在 IP 上工作正常,只是在端点上不行。