

# 使用 RDP 连接到 RDS Custom 数据库实例
<a name="custom-creating-sqlserver.rdp"></a>

创建 RDS Custom 数据库实例后，您可以使用 RDP 客户端连接到此实例。该过程与连接到 Amazon EC2 实例的过程相同。有关更多信息，请参阅[连接到 Windows 实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html)。

要连接到数据库实例，您需要与该实例关联的密钥对。RDS Custom 会为您创建密钥对。密钥对名称使用前缀 `do-not-delete-rds-custom-DBInstanceIdentifier`。AWS Secrets Manager 将私有密钥存储为密钥。

完成以下步骤中的任务：

1. [配置您的数据库实例以允许 RDP 连接](#custom-creating-sqlserver.rdp.port).

1. [检索您的私有密钥](#custom-creating-sqlserver.rdp.key).

1. [使用 RDP 实用工具连接到 EC2 实例](#custom-creating-sqlserver.rdp.connect).

## 配置您的数据库实例以允许 RDP 连接
<a name="custom-creating-sqlserver.rdp.port"></a>

要允许 RDP 连接，请配置 VPC 安全组并在主机上设置防火墙规则。

### 配置您的 VPC 安全组
<a name="custom-creating-sqlserver.rdp.port.vpc"></a>

请确保与您数据库实例关联的 VPC 安全组允许在端口 3389 上进行传输控制协议 (TCP) 的入站连接。要了解如何配置 VPC 安全组，请参阅 [配置您的 VPC 安全组](custom-setup-sqlserver.md#custom-setup-sqlserver.vpc.sg)。

### 在主机上设置防火墙规则
<a name="custom-creating-sqlserver.rdp.port.firewall"></a>

要允许端口 3389 上的 TCP 入站连接，请在主机上设置防火墙规则。以下示例显示如何执行此操作。

建议使用特定的 `-Profile` 值：`Public`、`Private` 或者 `Domain`。使用 `Any` 指这三个值。您还可以指定用逗号分隔的一组值。有关设置防火墙规则的更多信息，请参阅 Microsoft 文档中的 [Set-NetFirewallRule](https://docs.microsoft.com/en-us/powershell/module/netsecurity/set-netfirewallrule?view=windowsserver2019-ps)。

**使用 Systems Manager 会话管理器设置防火墙规则**

1. 连接到会话管理器，如 [使用 AWS Systems Manager 连接到 RDS Custom 数据库实例](custom-creating-sqlserver.ssm.md) 中所示。

1. 运行以下命令。

   ```
   Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -Direction Inbound -LocalAddress Any -Profile Any
   ```

**使用 Systems Manager CLI 命令设置防火墙规则**

1. 使用以下命令在主机上打开 RDP。

   ```
   OPEN_RDP_COMMAND_ID=$(aws ssm send-command --region $AWS_REGION \
       --instance-ids $RDS_CUSTOM_INSTANCE_EC2_ID \
       --document-name "AWS-RunPowerShellScript" \
       --parameters '{"commands":["Set-NetFirewallRule -DisplayName \"Remote Desktop - User Mode (TCP-In)\" -Direction Inbound -LocalAddress Any -Profile Any"]}' \
       --comment "Open RDP port" | jq -r ".Command.CommandId")
   ```

1. 使用输出中返回的命令 ID 获取上一个命令的状态。要使用以下查询返回命令 ID，请确保安装了 jq 插件。

   ```
   aws ssm list-commands \
       --region $AWS_REGION \
       --command-id $OPEN_RDP_COMMAND_ID
   ```

## 检索您的私有密钥
<a name="custom-creating-sqlserver.rdp.key"></a>

使用 AWS 管理控制台 或 AWS CLI 检索您的私有密钥。

### 控制台
<a name="custom-creating-sqlserver.rdp.key.CON"></a>

**要检索私有密钥**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，请选择 **Databases**（数据库），然后选择要连接到的 RDS Custom 数据库实例。

1. 选择**配置**选项卡。

1. 请注意您的数据库实例的 **DB instance ID**（数据库实例 ID），例如 `my-custom-instance`。

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**实例**。

1. 查找 EC2 实例的名称，然后选择与其关联的实例 ID。

   在此示例中，实例 ID 为 `i-abcdefghijklm01234`。

1. 在 **Details**（详细信息）中，查找 **Key pair name**（密钥对名称）。密钥对名称包括数据库标识符。在此示例中，密钥对名称为 `do-not-delete-rds-custom-my-custom-instance-0d726c`。

1. 在实例摘要中，查找 **Public IPv4 DNS**（公有 IPv4 DNS）。在本示例中，公有 DNS 可能是 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`。

1. 打开位于 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 的 AWS Secrets Manager 控制台。

1. 选择与密钥对同名的密钥。

1. 选择 **Retrieve secret value (检索密钥值)**。

### AWS CLI
<a name="custom-creating-sqlserver.rdp.key.CLI"></a>

**要检索私有密钥**

1. 通过调用 `aws rds describe-db-instances` 命令获取您的 RDS Custom 数据库实例的列表。

   ```
   aws rds describe-db-instances \
       --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
       --output text
   ```

1. 例如，从示例输出中选择数据库实例标识符，例如 `do-not-delete-rds-custom-my-custom-instance`。

1. 通过调用 `aws ec2 describe-instances` 命令查找您的数据库实例的 EC2 实例 ID。以下示例使用 EC2 实例名称来描述数据库实例。

   ```
   aws ec2 describe-instances \
       --filters "Name=tag:Name,Values=do-not-delete-rds-custom-my-custom-instance" \
       --output text \
       --query 'Reservations[*].Instances[*].InstanceId'
   ```

   以下示例输出显示了 EC2 实例 ID。

   ```
   i-abcdefghijklm01234
   ```

1. 通过指定 EC2 实例 ID 查找密钥名称，如以下示例所示。

   ```
   aws ec2 describe-instances \
       --instance-ids i-abcdefghijklm01234 \
       --output text \
       --query 'Reservations[*].Instances[*].KeyName'
   ```

   以下示例输出显示了使用前缀 `do-not-delete-rds-custom-DBInstanceIdentifier` 的密钥名称。

   ```
   do-not-delete-rds-custom-my-custom-instance-0d726c
   ```

## 使用 RDP 实用工具连接到 EC2 实例
<a name="custom-creating-sqlserver.rdp.connect"></a>

执行《Amazon EC2 用户指南》**中的[使用 RDP 连接到 Windows 实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp)中的过程。此过程假定您创建了包含您的私有密钥的 .pem 文件。