

# 使用 Kerberos 身份验证连接到 PostgreSQL
<a name="postgresql-kerberos-connecting"></a>

您可以使用 pgAdmin 界面或命令行界面（如 psql）通过 Kerberos 身份验证连接到 PostgreSQL。有关连接的更多信息，请参阅 [连接到 Amazon Aurora PostgreSQL 数据库集群](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL)。有关获取连接所需的端点、端口号和其他详细信息的信息，请参阅[查看 Aurora 集群的终端节点](Aurora.Overview.Endpoints.md#Aurora.Endpoints.Viewing)。

**注意**  
PostgreSQL 中的 GSSAPI 身份验证和加密由 Kerberos 库 `libkrb5.so` 实施。`postgres_fdw` 和 `dblink` 等功能也依赖于同一个库，以通过 Kerberos 身份验证或加密进行出站连接。

## pgAdmin
<a name="collapsible-section-pgAdmin"></a>

要使用 pgAdmin 通过 Kerberos 身份验证连接到 PostgreSQL，请执行以下步骤：

1. 在您的客户端计算机上启动 pgAdmin 应用程序。

1. 在 **Dashboard** (控制面板) 选项卡上，选择 **Add New Server** (添加新服务器)。

1. 在 **Create - Server (创建 - 服务器)** 对话框中，在 **General (常规)** 选项卡上键入名称以在 pgAdmin 中标识该服务器。

1. 在 **Connection (连接)** 选项卡上，键入您的 Aurora PostgreSQL 数据库的以下信息。
   + 对于 **Host**（主机），输入 Aurora PostgreSQL 数据库集群的写入器实例 的端点。端点看起来类似于以下所示：

     ```
     AUR-cluster-instance.111122223333.aws-region.rds.amazonaws.com
     ```

     要从 Windows 客户端连接到本地 Microsoft Active Directory，请使用 AWS Managed Active Directory 的域名，而不是主机端点中的 `rds.amazonaws.com`。例如，假设 AWS Managed Active Directory 的域名为 `corp.example.com`。然后，对于 **Host**（主机），按如下方式指定端点：

     ```
     AUR-cluster-instance.111122223333.aws-region.corp.example.com
     ```
   + 对于 **Port (端口)**，输入分配的端口。
   + 对于 **Maintenance database (维护数据库)**，输入客户端将连接到的初始数据库的名称。
   + 对于**用户名**，键入您在 [步骤 7：为您的 Kerberos 主体创建 PostgreSQL 用户](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins) 中为 Kerberos 身份验证输入的用户名。

1. 选择 **Save**。

## psql
<a name="collapsible-section-psql"></a>

要使用 psql 通过 Kerberos 身份验证连接到 PostgreSQL，请执行以下步骤：

1. 在命令提示符处，运行以下命令。

   ```
   kinit username                
   ```

   将 *`username`* 替换为用户名。在提示符下，输入在 Microsoft Active Directory 中为用户存储的密码。

1. 如果 PostgreSQL 数据库集群使用可公开访问的 VPC，请将数据库集群端点的 IP 地址放在 EC2 客户端上的 `/etc/hosts` 文件中。例如，以下命令获取 IP 地址，然后将其放在 `/etc/hosts` 文件中。

   ```
   % dig +short PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.AWS-Region.compute.amazonaws.com.
   34.210.197.118 
   
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
   ```

   如果您从 Windows 客户端使用本地 Microsoft Active Directory，则需要使用特殊终端节点进行连接。在主机终端节点中使用 `rds.amazonaws.com` Managed Active Directory 的域名，而不是 Amazon 域 AWS。

   例如，假设 AWS Managed Active Directory 的域名为 `corp.example.com`。为终端节点使用格式 `PostgreSQL-endpoint.AWS-Region.corp.example.com`，将其放入 `/etc/hosts` 文件。

   ```
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.corp.example.com" >> /etc/hosts
   ```

1. 使用以下 psql 命令登录到与 Active Directory 集成的 PostgreSQL 数据库集群。使用集群或实例终端节点。

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com postgres
   ```

   要从 Windows 客户端使用本地 Active Directory 登录 PostgreSQL 数据库集群，请使用以下 psql 命令以及上一步中的域名 (`corp.example.com`)：

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.corp.example.com postgres
   ```