如何使用SSH隧道通过EC2实例连接到RDS实例?

问题描述 投票:0回答:2

所以这对我来说真的很新,如果这是一个愚蠢的问题,我们深表歉意。

我有一个RDS实例,该实例不可公开访问,并且位于其自己的专用VPC中。我有一个允许连接到RDS的EC2实例,但没有其他任何东西可以连接到该实例。

我现在希望PgAdmin能够显示我的RDS实例中的数据。

我经历了PgAdmin中的向导,我将EC2实例的公共IP作为隧道主机,用户名是ec2-user,身份验证是通过身份文件(使用我用于ssh进入实例的pem文件)。

但是,我仍然无法连接。在“高级”选项卡中,PGAdmin要求提供主机地址,但在放入RDS实例的端点时会抱怨。

我如何让本地pgAdmin现在访问不再可以通过公共Internet访问的数据库?

-忘记添加错误信息

Unable to connect to server:

Failed to create the SSH tunnel.
Error: Could not establish session to SSH gateway
postgresql amazon-web-services amazon-rds pgadmin
2个回答
0
投票

似乎您希望将Amazon EC2实例与端口转发一起使用,以访问同一VPC中的私有Amazon RDS实例。

这是我配置此类连接的方式。

1。确认SSH是否可用于EC2实例

首先,请确认您可以通过SSH进入EC2实例。您将使用类似于以下命令:

ssh -i key.pem ec2-user@IP-ADDRESS

2。使用端口转发

如果以上方法有效,请修改SSH命令以使用端口转发:

ssh -i key.pem -L 5432:RDS-HOST-NAME:5432 ec2-user@IP-ADDRESS

这将通过SSH将您自己计算机上的端口5432转发到EC2实例。然后,发送到localhost:5432的所有流量都将通过SSH连接转发。然后,EC2实例会将流量发送到RDS-HOST-NAME:5432。 (用RDS数据库的DNS名称替换RDS-HOST-NAME。)

3。将PgAdmin指向连接

在PgAdmin中,将数据库称为:localhost:5432

当然,您可以在端口转发连接中使用其他端口号。如果将多个连接转发到不同的数据库,这将很有用。但是,如果可能,我希望保持它们不变。


0
投票

为了使用PgAdmin中的SSH隧道]重现您的情况,我执行了以下操作:

  • 使用以下方法启动了Amazon RDS数据库:
    • 公共可访问性:否
    • 安全组:
    • 允许从10.0.0.0/16(VPC的CIDR)在5432上进行入站访问
  • 在同一VPC中启动了可公开访问的Amazon EC2实例
  • 将PgAdmin的“ SSH隧道”配置为:
    • 隧道主机:
    • 使用了我的EC2实例的DNS名称
    • 隧道端口:
    • 22
    • 用户名:
    • ec2-user
    • 身份验证:
    • 身份文件
    • 身份文件:
    • 使用了密钥对,我将在实例中使用SSH
  • 将PgAdmin的“连接”配置为:
    • 主机:
    • Amazon RDS控制台中的端点
    • 端口:
    • 5432
    • 启动Amazon RDS数据库时设置的数据库,用户名,密码
  • 已成功连接。

    如果它为您挂起,请检查安全组

    允许来自EC2实例的传入连接。

    “

    “连接”

    © www.soinside.com 2019 - 2024. All rights reserved.