Skip to content

如何将 Amazon EC2 实例用作堡垒主机从本地计算机连接到私有 Amazon RDS 数据库实例?

3 分钟阅读
0

我想将 Amazon Elastic Compute Cloud (Amazon EC2) 实例用作堡垒(跳转)主机,从本地计算机连接到私有 mazon Relational Database Service (Amazon RDS) 数据库实例。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要连接到私有 Amazon RDS 或 Amazon Aurora 数据库实例,最佳做法是使用 VPNAWS Direct Connect。如果您无法使用任何一个选项,请使用堡垒主机。

以下示例配置适用于位于 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon RDS for MySQL 实例。该示例使用安全组来限制访问。但是,您可以限制子网的网络访问控制列表(网络 ACL),以提高连接的安全性。

启动和配置 EC2 实例

完成以下步骤:

  1. 打开 Amazon EC2 控制台,然后选择 Launch instance(启动实例)。
  2. 选择亚马逊机器映像 (AMI)。
  3. 选择实例类型,然后选择 Next: Configure Instance Details(下一步:配置实例详细信息)。
  4. 对于 Network(网络),选择 Amazon RDS 数据库实例使用的 VPC。
  5. 对于 Subnet(子网),选择 VPC 中的私有子网
  6. 选择 Next: Add Storage(下一步:添加存储空间),然后根据需要修改存储空间。
  7. 选择 Next: Add Tags(添加标签),然后根据需要添加标签。
  8. 选择 Next: Configure Security Group(下一步:配置安全组)。
  9. 选择 Add Rule(添加规则),然后输入以下内容:
    对于 Type(类型),输入 Custom TCP Rule(自定义 TCP 规则)
    对于 Protocol(协议),输入 TCP
    对于 Port Range(端口范围),输入 22
    对于 Source(源),输入您的 Amazon EC2 连接端点使用的安全组。
  10. 选择 Review and Launch(查看并启动),然后选择 Launch(启动)。

配置 Amazon RDS 数据库实例的安全组

注意: 要自动将一个或多个 EC2 实例连接到 Amazon RDS 数据库,请参阅使用 RDS 控制台将实例自动连接到 RDS 数据库

完成以下步骤:

  1. 打开 Amazon RDS 控制台
  2. 在导航窗格中,选择 Databases(数据库)。
  3. 选择 Amazon RDS 数据库实例的名称。如果您还没有,请创建 RDS 数据库实例
  4. 选择 Connectivity & security(连接和安全)。
  5. Security(安全)部分中,选择 VPC security groups(VPC 安全组)下的链接。
  6. 选择安全组,选择 Actions(操作),然后选择 Edit inbound rules(编辑入站规则)。
  7. 选择 Add rule(添加规则),然后输入以下内容:
    对于 Type(类型),输入 Custom TCP Rule(自定义 TCP 规则)
    对于 Protocol(协议),输入 TCP
    对于 Port Range(端口范围),输入您的 Amazon RDS 数据库实例的端口。
    对于 Source(源),输入您的 EC2 实例的私有 IP 地址。
  8. 选择 Save(保存)。

安全组的此配置允许来自 EC2 实例的私有 IP 地址的流量。如果 EC2 实例和 Amazon RDS 数据库实例使用相同的 VPC,则无需修改 Amazon RDS 数据库实例的路由表。如果 VPC 不同,请创建 VPC 对等连接,以允许这些 VPC 之间的连接。

注意: 如果您使用更具可扩展性的解决方案,请查看您的配置。例如,如果您在安全组规则中使用安全组 ID,请确保其不会限制对单个实例的访问。相反,请将规则配置为限制对使用特定安全组 ID 的任何资源的访问。

创建 EC2 实例连接端点

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择 Endpoints(端点)。
  3. 选择 Create endpoint(创建端点),然后指定端点设置。
    (可选)对于 Name tag(名称标签),输入端点的名称。
    对于 Service category(服务类别),选择 EC2 Instance Connect Endpoint(EC2 实例连接端点)。
    对于 VPC,选择包含目标实例的 VPC。
    (可选)要保留客户端 IP 地址,请展开 Additional settings(其他设置)并选中该复选框。否则,将默认使用端点网络接口作为客户端 IP 地址。
    对于 Security groups(安全组),选择要与端点关联的安全组。否则,将默认使用 VPC 的默认安全组。
    对于 Subnet(子网),选择要在其中创建端点的子网。
    (可选)要添加标签,请选择 Add new tag(添加新标签)并输入标签密钥和标签值。
  4. 检查您的设置,然后选择 Create endpoint(创建端点)。
  5. 端点的初始状态为 Pending(待处理)。要连接到实例,必须等到端点状态变为 Available(可用)。这可能需要几分钟。

从本地计算机连接到 RDS 数据库实例

**注意:**您必须具有对 AWS CLI 的访问权限。

要通过 SSH 隧道从本地 MySQL 客户端连接到私有 RDS 实例,请完成以下步骤:
Linux 或 macOS

  1. 运行以下命令打开从本地计算机到 EC2 实例的隧道:

    aws ec2-instance-connect open-tunnel --instance-id ec2-instance-ID --local-port 8888

    **注意:**请将 ec2-instance-ID 替换为您的 EC2 实例 ID。

  2. 打开另一个连接并运行以下命令,以通过 EC2 实例创建从本地主机到 RDS 数据库的 SSH 隧道:

    ssh -i YOUR_EC2_KEY EC2_USER@EC2_HOST -p EC2_TUNNEL_PORT -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT -N -f

    **注意:**请替换以下值:
    YOUR_EC2_KEY 替换为您的 EC2 私钥文件的路径
    EC2_USER 替换为您的 EC2 实例用户名
    EC2_HOST 替换为您的 EC2 实例的主机名
    EC2_TUNNEL_PORT 替换为您配置的端口
    LOCAL_PORT 替换为本地计算机上未使用的端口
    RDS_ENDPOINT 替换为您的 RDS 实例的端点
    REMOTE_PORT 替换为您的 Amazon RDS 数据库在 RDS 实例中使用的端口。

  3. 使用第三个连接并运行以下命令,以从本地计算机连接到您的 Amazon RDS 实例:

    mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p

    **注意:**请替换以下值:
    LOCAL_PORT 替换为您的本地端口号
    DB_USER 替换为您的 RDS 数据库用户名
    DB password 替换为 Amazon RDS 数据库密码

相关信息

如何解决连接到 Amazon RDS 数据库实例时遇到的问题?

启动 Amazon EC2 实例

如何将 Amazon EC2 实例用作堡垒主机从本地计算机连接到私有 Amazon RDS 数据库实例?