

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Amazon EC2 实例加入您的 Amazon 托管微软 AD 的方法
<a name="ms_ad_join_instance"></a>

当 Amazon EC2 实例启动时，您可以将其无缝加入到您的 Active Directory 域中。有关更多信息，请参阅 [将 Amazon EC2 Windows 实例加入您的 Amazon 托管微软 AD 活动目录](launching_instance.md)。您还可以使用 A [Amazon Systems Manager ut](https://docs.amazonaws.cn/systems-manager/latest/userguide/systems-manager-automation.html) omation 直接从 Amazon Directory Service 控制台启动 EC2 实例并将其加入 Active Directory 域。

如果需要手动将 EC2 实例加入 Active Directory 域，则必须在正确的区域和安全组或子网中启动该实例，然后将该实例加入该域。

要能够远程连接到这些实例，必须具有从所连接的网络到实例的 IP 连接。在大多数情况下，这要求互联网网关连接到 VPC，并且实例具有公有 IP 地址。

**Topics**
+ [在托管的 Microsoft AD 活动目录中启动目录 Amazon 管理实例](console_instance.md)
+ [将 Amazon EC2 Windows 实例加入您的 Amazon 托管微软 AD 活动目录](launching_instance.md)
+ [将亚马逊 EC2 Linux 实例加入您的 Amazon 托管微软 AD 活动目录](joining_linux_instance.md)
+ [将亚马逊 EC2 Mac 实例加入您的 Amazon 托管微软 AD 活动目录](join_mac_instance.md)
+ [为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)
+ [为 Amazon 托管的 Microsoft AD 创建或更改 DHCP 选项集](dhcp_options_set.md)

# 在托管的 Microsoft AD 活动目录中启动目录 Amazon 管理实例
<a name="console_instance"></a>

此过程在中启动 Amazon EC2 目录管理Windows实例， Amazon Web Services 管理控制台 使用 Amazon Systems Manager 自动化来管理您的目录。您也可以通过直接在 Amazon Systems Manager 自动化控制台中运行自动化 [Amazon-创建DSManagement实例](https://docs.amazonaws.cn/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-create-ds-management-instance.html)来完成此操作。

有关更多信息，请参阅以下链接：
+ [简化活动目录域名加入方式 Amazon Systems Manager](https://www.amazonaws.cn/blogs//modernizing-with-aws/simplifying-active-directory-domain-join-with-aws-systems-manager-2/)
+ [Amazon Systems Manager 如何使用将正在运行的 EC2 Windows 实例加入我的 Amazon Directory Service 域？](https://repost.aws/knowledge-center/ec2-systems-manager-dx-domain)

## 先决条件
<a name="console_instance_prereqs"></a>

需要满足以下先决条件才能完成本教程：
+ 你需要进行设置 Amazon Systems Manager。有关更多信息，请参阅[设置 Amazon Systems Manager](https://docs.amazonaws.cn//systems-manager/latest/userguide/systems-manager-setting-up-console.html)。
+ 您需要一个允许 Systems Manager 和 Amazon 托管 Microsoft AD 的 [IAM 实例配置文件角色](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。
  + 有关 Systems Manager 的更多信息，请参阅[配置 Systems Manager 所需的实例权限](https://docs.amazonaws.cn//systems-manager/latest/userguide/setup-instance-permissions.html)。
  + IAM 实例角色需要以下 Amazon 托管策略，这样您的 EC2 目录管理Windows实例才能加入您的 Amazon 托管 Microsoft AD：
    + **`AmazonSSMManagedInstanceCore`**
    + **`AmazonSSMDirectoryServiceAccess`**
+ 连接到您的 Amazon 托管 Microsoft AD 的 VPC 需要允许访问公共 Amazon Directory Service 终端节点。有关更多信息，请参阅 [创建 Amazon 托管 Microsoft AD 的先决条件](ms_ad_getting_started.md#ms_ad_getting_started_prereqs)。
+ 要从控制台启动目录管理 EC2 实例，您必须在账户中启用以下权限：
  + `ds:DescribeDirectories`
  + `ec2:AuthorizeSecurityGroupIngress`
  + `ec2:CreateSecurityGroup`
  + `ec2:CreateTags`
  + `ec2:DeleteSecurityGroup`
  + `ec2:DescribeInstances`
  + `ec2:DescribeInstanceStatus`
  + `ec2:DescribeKeyPairs`
  + `ec2:DescribeSecurityGroups`
  + `ec2:DescribeVpcs`
  + `ec2:RunInstances`
  + `ec2:TerminateInstances`
  + `iam:AddRoleToInstanceProfile`
  + `iam:AttachRolePolicy`
  + `iam:CreateInstanceProfile`
  + `iam:CreateRole`
  + `iam:DeleteInstanceProfile`
  + `iam:DeleteRole`
  + `iam:DetachRolePolicy`
  + `iam:GetInstanceProfile`
  + `iam:GetRole`
  + `iam:ListAttachedRolePolicies`
  + `iam:ListInstanceProfiles`
  + `iam:ListInstanceProfilesForRole`
  + `iam:PassRole`
  + `iam:RemoveRoleFromInstanceProfile`
  + `iam:TagInstanceProfile`
  + `iam:TagRole`
  + `ssm:CreateDocument`
  + `ssm:DeleteDocument`
  + `ssm:DescribeInstanceInformation`
  + `ssm:GetAutomationExecution`
  + `ssm:GetParameters`
  + `ssm:ListCommandInvocations`
  + `ssm:ListCommands`
  + `ssm:ListDocuments`
  + `ssm:SendCommand`
  + `ssm:StartAutomationExecution`
  + `ssm:GetDocument`

## 在中启动目录管理 EC2 实例 Amazon Web Services 管理控制台
<a name="console_instance_launch"></a>

1. 登录 [Amazon Directory Service 控制台](https://console.amazonaws.cn/directoryservicev2/)。

1. 在 **Active Directory** 下，选择**目录**。

1. 对于要在其中启动目录管理 EC2 实例的目录，选择其**目录 ID**。

1. 在目录页面的右上角，选择**操作**。

1. 在**操作**下拉列表中，选择**启动目录管理 EC2 实例**。

1. 在**启动目录管理 EC2 实例**页面的**输入参数**下，填写字段。

   1. （可选）您可以为实例提供密钥对。从**密钥对名称：*可选***下拉列表中，选择密钥对。

   1. （可选）选择 “**查看” Amazon CLI 命令**以查看您在中用于运行此自动化的示例。 Amazon CLI 

1. 选择**提交**。

1. 您将返回到目录页面。屏幕顶部会显示一个绿色闪烁栏，表示您已成功开始启动。

## 查看目录管理 EC2 实例
<a name="view_console_instances"></a>

如果您尚未为目录启动任何 EC2 实例，则会在**目录管理 EC2 实例**下显示短划线（**-**）。

1. 在 **Active Directory** 下，选择**目录**，然后选择要查看的目录。

1. 在**目录详细信息**下，在**目录管理 EC2 实例**下，选择要查看的一个或所有实例。

1. 当您选择实例时，将被路由到 **EC2 连接到实例**页面，将远程桌面连接到实例。

# 将 Amazon EC2 Windows 实例加入您的 Amazon 托管微软 AD 活动目录
<a name="launching_instance"></a>

您可以启动亚马逊 EC2 Windows 实例并将其加入 Amazon 托管微软 AD。或者，您可以手动将现有 EC2 Windows 实例加入 Amazon 托管 Microsoft AD。

------
#### [ Seamlessly join EC2 Windows instance ]

此过程将亚马逊 EC2 Windows 实例无缝连接到您的 Amazon 托管 Microsoft AD。如果您需要跨多个域名进行无缝联接 Amazon Web Services 账户，请参阅[教程：共享您的 Amazon 托管 Microsoft AD 目录以实现无缝加入 EC2 域名](ms_ad_tutorial_directory_sharing.md)。有关 Amazon EC2 的更多信息，请参阅[什么是 Amazon EC2？](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/concepts.html)。

**先决条件**

要通过域无缝加入 EC2 实例，需要完成以下操作：
+ 拥有 Amazon 托管的 Microsoft 广告。要了解更多信息，请参阅[创建你的 Microsoft Amazon 托管广告](ms_ad_getting_started.md#ms_ad_getting_started_create_directory)。
+ 您需要拥有以下 IAM 权限，才能无缝加入 EC2 Windows 实例：
  + 具有以下 IAM 权限的 IAM 实例配置文件：
    + `AmazonSSMManagedInstanceCore`
    + `AmazonSSMDirectoryServiceAccess`
  + 将 EC2 无缝加入 Amazon 托管 Microsoft AD 的用户需要以下 IAM 权限：
    + Amazon Directory Service 权限：
      + `"ds:DescribeDirectories"`
      + `"ds:CreateComputer"`
    + Amazon VPC 权限：
      + `"ec2:DescribeVpcs"`
      + `"ec2:DescribeSubnets"`
      + `"ec2:DescribeNetworkInterfaces"`
      + `"ec2:CreateNetworkInterface"`
      + `"ec2:AttachNetworkInterface"`
    + EC2 权限；
      + `"ec2:DescribeInstances"`
      + `"ec2:DescribeImages"`
      + `"ec2:DescribeInstanceTypes"`
      + `"ec2:RunInstances"`
      + `"ec2:CreateTags"`
    + Amazon Systems Manager 权限：
      + `"ssm:DescribeInstanceInformation"`
      + `"ssm:SendCommand"`
      + `"ssm:GetCommandInvocation"`
      + `"ssm:CreateBatchAssociation"`

创建 Amazon 托管 Microsoft AD 时，系统会创建一个包含入站和出站规则的安全组。要了解有关这些规则与端口的更多信息，请参阅[用你的 Amazon 托管 Microsoft AD 创建了什么](ms_ad_getting_started_what_gets_created.md)。要无缝加入域名加入 EC2 Windows 实例，您启动实例的 VPC 应允许与 Amazon 托管 Microsoft AD 安全组的入站和出站规则中允许的端口相同。
+ 根据网络安全和防火墙设置，您可能需要允许额外的出站流量。此流量将通过 HTTPS（端口 443）到达以下端点：  
****    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/launching_instance.html)
+ 我们建议使用 DNS 服务器来解析你的 Amazon 托管 Microsoft AD 域名。要实现此操作，可创建 DHCP 选项集。请参阅[为 Amazon 托管的 Microsoft AD 创建或更改 DHCP 选项集](dhcp_options_set.md)了解更多信息。
  + 如果您选择不创建 DHCP 选项集，则您的 DNS 服务器将是静态的，并由您的 Amazon 托管 Microsoft AD 进行配置。

**无缝加入 Amazon EC2 Windows 实例**

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 在导航栏中，选择与现有目录 Amazon Web Services 区域 相同的目录。

1. 在 **EC2 控制面板**的**启动实例**部分，选择**启动实例**。

1. 在**启动实例**页面的**名称和标签**部分下，输入您要用于 Windows EC2 实例的名称。

1.  （可选）选择**添加其他标签**，添加一个或多个标签密钥值对，以组织、跟踪或控制对此 EC2 实例的访问权限。

1. 在**应用程序和操作系统映像（Amazon 机器映像）**部分，在**快速入门**窗格中选择 **Windows**。您可以从**Amazon 机器映像（AMI）**下拉列表中更改 Windows Amazon 机器映像（AMI）。

1. 在**实例类型**部分，从**实例类型**下拉列表中选择要使用的实例类型。

1. 在**密钥对（登录）**部分，您可以选择创建新密钥对，或从现有密钥对中进行选择。

   1. 要创建新的密钥对，请选择**新建新密钥对**。

   1. 输入密钥对的名称，然后为**密钥对类型**和**私钥文件格式**选择一个选项。

   1.  要以可与 OpenSSH 一起使用的格式保存私钥，请选择 **pem**。要以可与 PuTTY 一起使用的格式保存私钥，请选择 **ppk**。

   1. 选择**创建密钥对**。

   1. 您的浏览器会自动下载私有密钥文件。将私有密钥文件保存在安全位置。
**重要**  
这是您保存私有密钥文件的唯一机会。

1. 在**启动实例**页面的**网络设置**部分下，选择**编辑**。从 **VPC – *必需***下拉列表中选择创建目录的 **VPC**。

1. 从**子网**下拉列表中选择 VPC 中的其中一个公有子网。选择的子网必须将所有外部流量都路由到互联网网关。否则将无法远程连接到实例。

   有关如何连接到互联网网关的更多信息，请参阅《Amazon VPC 用户指南》**中的[使用互联网网关连接到互联网](https://docs.amazonaws.cn//vpc/latest/userguide/VPC_Internet_Gateway.html)。

1. 在**自动分配公有 IP** 下，选择**启用**。

   有关公共和私有 IP 寻址的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 实例 IP 寻址](https://docs.amazonaws.cn/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。

1. 对于**防火墙（安全组）**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 对于**配置存储**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 选择**高级详细信息**部分，从**域加入目录**下拉列表中选择您的域。
**注意**  
选择域加入目录后，您可能会看到：  

![\[选择域加入目录时出现错误消息。您现有的 SSM 文档存在错误。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

当 EC2 启动向导识别到某个现有 SSM 文档包含意外属性时，会发生此错误。您可以执行以下操作之一：  
如果您之前编辑了 SSM 文档且属性为预期属性，请选择关闭并继续启动 EC2 实例，不做任何更改。
选择“在此处删除现有 SSM 文档”链接以删除 SSM 文档。这将允许创建包含正确属性的 SSM 文档。启动 EC2 实例时，将自动创建 SSM 文档。

1. 对于 **IAM 实例配置文件**，您可以选择现有的 IAM 实例配置文件或创建新的 IAM 实例配置文件。从 IAM 实例配置文件下拉列表中选择一个SSMDirectoryServiceAccess附有 **Ama** **zon SSMManaged InstanceCore** 和 Amazon Amazon 托管策略**的 IAM 实例配置文件**。要创建新的 IAM 配置文件，请选择**创建新的 IAM 配置文件**链接，然后执行以下操作：

   1. 选择**创建角色**。

   1. 在**选择受信任的实体**下，选择 **Amazon 服务**。

   1. 在 **Use case**（使用案例）下，选择 **EC2**。

   1.  在 “**添加权限**” 下的策略列表中，选择 **Amazon SSMManaged InstanceCore 和 Ama** **zon SSMDirectory ServiceAccess** 政策。在搜索框中键入 **SSM** 以筛选列表。选择**下一步**。
**注意**  
**Amazon SSMDirectory ServiceAccess** 提供将实例加入由管理的活动目录的权限 Amazon Directory Service。**Amazon SSMManaged InstanceCore** 提供使用该 Amazon Systems Manager 服务所需的最低权限。有关创建具有这些权限的角色的更多信息，以及您可以分配给 IAM 角色的其他权限和策略的信息，请参阅《Amazon Systems Manager 用户指南》**中的[为 Systems Manager 创建 IAM 实例配置文件](https://docs.amazonaws.cn/systems-manager/latest/userguide/setup-instance-profile.html)。

   1. 在**名称、查看和创建**页面上，输入**角色名称**。您将需要此角色名称来附加到 EC2 实例。

   1. （可选）您可以在**描述**字段中提供 IAM 实例配置文件的描述。

   1. 选择**创建角色**。

   1.  返回**启动实例**页面，选择 **IAM 实例配置文件**旁边的刷新图标。您的新 IAM 实例配置文件应显示在 **IAM 实例配置文件**下拉列表中。选择新的配置文件，其余设置保留默认值。

1. 选择**启动实例**。

------
#### [ Manually join EC2 Windows instance ]

要将现有 Amazon EC2 Windows 实例手动加入 Amazon Managed Microsoft AD Active Directory，实例必须使用 [将 Amazon EC2 Windows 实例加入您的 Amazon 托管微软 AD 活动目录](#launching_instance) 中指定的参数启动。

你需要微软 AD DNS Amazon 托管服务器的 IP 地址。此信息可以在**目录服务** > **目录** > 目录的**目录 ID** 链接 > **目录详细信息**以及**网络与安全**下找到。

![\[在 Amazon Directory Service 控制台的目录详细信息页面上，突出显示所 Amazon Directory Service 提供的 DNS 服务器的 IP 地址。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/directory_details_highlighted.png)


**将 Windows 实例加入 Amazon 托管微软 AD 活动目录**

1. 使用任何远程桌面协议客户端连接到实例。

1. 在实例上打开 TCP/ IPv4 属性对话框。

   1. 打开 **Network Connections**。
**提示**  
您可以在实例上从命令提示符运行以下命令，直接打开 **Network Connections**。  

      ```
      %SystemRoot%\system32\control.exe ncpa.cpl
      ```

   1. 打开任何已启用网络连接的上下文菜单 (右键单击)，然后选择 **Properties**。

   1. 在连接属性对话框中，打开 (双击) **Internet Protocol Version 4**。

1. **选择 “**使用以下 DNS 服务器地址**”，将 “**首选 DNS 服务器**” 和 “**备用 DNS 服务器**地址” 更改为 Microsoft AD 提供的 Amazon 托管 DNS 服务器的 IP 地址，然后选择 “确定”。**  
![\[“互联网协议版本 4 (TCP/IPv4) 属性” 对话框突出显示了首选 DNS 服务器和备用 DNS 服务器字段。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/dns_server_addresses.png)

1. 打开实例的 **System Properties** 对话框，选择 **Computer Name** 选项卡，然后选择 **Change**。
**提示**  
您可以在实例上从命令提示符运行以下命令，打开 **System Properties** 对话框。  

   ```
   %SystemRoot%\system32\control.exe sysdm.cpl
   ```

1. 在 “**成员**” 字段中，选择 “**域**”，输入您的 Amazon 托管 Microsoft AD Active Directory 的完全限定名称，然后选择 “**确定”**。

1. 当系统提示输入域管理员的名称和密码时，输入具有域加入权限的账户的用户名和密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。
**注意**  
可以输入完全限定的域名或 NetBIOS 名称，后跟反斜杠（\$1），然后是用户名。用户名应为 **Admin**。例如，**corp.example.com\$1admin** 或 **corp\$1admin**。

1. 收到欢迎加入域的消息之后，重新启动实例使更改生效。

现在，您的实例已加入 Amazon 托管 Microsoft AD Active Directory 域，您可以远程登录该实例并安装用于管理目录的实用程序，例如添加用户和群组。Active Directory 管理工具可用于创建用户和组。有关更多信息，请参阅 [为托管的 Microsoft AD 安装活动目录 Amazon 管理工具](ms_ad_install_ad_tools.md)。

**注意**  
您也可以使用 Amazon Route 53 来处理 DNS 查询，而不必手动更改 Amazon EC2 实例上的 DNS 地址。有关更多信息，请参阅[将 Directory Service 的 DNS 解析与 Amazon Route 53 Resolver集成](https://www.amazonaws.cn/blogs//networking-and-content-delivery/integrating-your-directory-services-dns-resolution-with-amazon-route-53-resolvers/)和[将出站 DNS 查询转发到您的网络](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries)。

------

# 将亚马逊 EC2 Linux 实例加入您的 Amazon 托管微软 AD 活动目录
<a name="joining_linux_instance"></a>

你可以在中启动 EC2 Linux 实例并将其加入你的 Amazon 托管 Microsoft AD Amazon Web Services 管理控制台。您也可以手动将 EC2 Linux 实例加入您的 Amazon 托管微软 AD。也可以使用像 Winbind 这样的工具，这样你就可以将 EC2 Linux 实例加入你的 Amazon 托管微软 AD。

支持以下 Linux 实例分发版和版本：
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2（64 位 x86）
+ Red Hat Enterprise Linux 8 (HVM)（64 位 x86）
+ Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux 企业服务器 15 SP1

**注意**  
Ubuntu 14 和 Red Hat Enterprise Linux 7 和 8 之前的发行版不支持无缝域加入功能。

**Topics**
+ [将亚马逊 EC2 Linux 实例无缝加入你的 Amazon 托管微软 AD 活动目录](seamlessly_join_linux_instance.md)
+ [将亚马逊 EC2 Linux 实例无缝加入共享的 Amazon 托管微软 AD](seamlessly_join_linux_to_shared_MAD.md)
+ [手动将亚马逊 EC2 Linux 实例加入您的 Amazon 托管微软 AD 活动目录](join_linux_instance.md)
+ [使用 Winbind 手动将亚马逊 EC2 Linux 实例加入你的 Amazon 托管微软 AD 活动目录](join_linux_instance_winbind.md)

# 将亚马逊 EC2 Linux 实例无缝加入你的 Amazon 托管微软 AD 活动目录
<a name="seamlessly_join_linux_instance"></a>

此过程将亚马逊 EC2 Linux 实例无缝连接到您的 Amazon 托管微软 AD 活动目录。要完成此过程，您需要创建一个可能产生额外费用的 Amazon Secrets Manager 密钥。有关更多信息，请参阅[Amazon Secrets Manager 定价](https://www.amazonaws.cn/secrets-manager/pricing/)。

如果您需要跨多个 Amazon 账户进行无缝域加入，则可以选择启用[目录共享](https://docs.amazonaws.cn/directoryservice/latest/admin-guide/ms_ad_directory_sharing.html)。

支持以下 Linux 实例分发版和版本：
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2（64 位 x86）
+ Red Hat Enterprise Linux 8 (HVM)（64 位 x86）
+ Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux 企业服务器 15 SP1

**注意**  
Ubuntu 14 和 Red Hat Enterprise Linux 7 和 8 之前的发行版不支持无缝域加入功能。

有关将 Linux 实例无缝加入 Amazon 托管 Microsoft AD Active Directory 的过程的演示，请 YouTube 观看以下视频。

## 先决条件
<a name="seamless-linux-prereqs"></a>

您需要完成这些章节中的过程，才能设置无缝域加入到 EC2 Linux 实例。

### 无缝域加入的网络先决条件
<a name="linux-domain-join-networking-prereqs"></a>

要通过域无缝加入 EC2 Linux 实例，需要完成以下操作：
+ 您需要拥有以下 IAM 权限，才能无缝加入 EC2 Linux 实例：
  + 拥有 Amazon 托管的 Microsoft 广告。要了解更多信息，请参阅[创建你的 Microsoft Amazon 托管广告](ms_ad_getting_started.md#ms_ad_getting_started_create_directory)。
  + 您需要拥有以下 IAM 权限，才能无缝加入 EC2 Windows 实例：
    + 具有以下 IAM 权限的 IAM 实例配置文件：
      + `AmazonSSMManagedInstanceCore`
      + `AmazonSSMDirectoryServiceAccess`
    + 将 EC2 无缝加入 Amazon 托管 Microsoft AD 的用户需要以下 IAM 权限：
      + Amazon Directory Service 权限：
        + `"ds:DescribeDirectories"`
        + `"ds:CreateComputer"`
      + Amazon VPC 权限：
        + `"ec2:DescribeVpcs"`
        + `"ec2:DescribeSubnets"`
        + `"ec2:DescribeNetworkInterfaces"`
        + `"ec2:CreateNetworkInterface"`
        + `"ec2:AttachNetworkInterface"`
      + EC2 权限；
        + `"ec2:DescribeInstances"`
        + `"ec2:DescribeImages"`
        + `"ec2:DescribeInstanceTypes"`
        + `"ec2:RunInstances"`
        + `"ec2:CreateTags"`
      + Amazon Systems Manager 权限：
        + `"ssm:DescribeInstanceInformation"`
        + `"ssm:SendCommand"`
        + `"ssm:GetCommandInvocation"`
        + `"ssm:CreateBatchAssociation"`
+ 创建 Amazon 托管 Microsoft AD 时，系统会创建一个包含入站和出站规则的安全组。要了解有关这些规则与端口的更多信息，请参阅[用你的 Amazon 托管 Microsoft AD 创建了什么](ms_ad_getting_started_what_gets_created.md)。要无缝加入域名加入 EC2 Linux 实例，您启动实例的 VPC 应允许与 Amazon 托管 Microsoft AD 安全组的入站和出站规则中允许的端口相同。
  + 根据网络安全和防火墙设置，您可能需要允许额外的出站流量。此流量将通过 HTTPS（端口 443）到达以下端点：  
****    
[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/seamlessly_join_linux_instance.html)
+ 我们建议使用 DNS 服务器来解析你的 Amazon 托管 Microsoft AD 域名。要实现此操作，可创建 DHCP 选项集。请参阅[为 Amazon 托管的 Microsoft AD 创建或更改 DHCP 选项集](dhcp_options_set.md)了解更多信息。
  + 如果您选择不创建 DHCP 选项集，则您的 DNS 服务器将是静态的，并由您的 Amazon 托管 Microsoft AD 进行配置。

### 选择无缝域名加入服务账户
<a name="seamless-linux-prereqs-select"></a>

你可以无缝地将 Linux 计算机加入你的 Amazon 托管微软 AD Active Directory 域。要执行此操作，您必须使用一个具有创建计算机账户权限的用户账户，才能将计算机加入域。尽管 *Amazon 委托管理员*或其他组的成员可能有足够的权限将计算机加入域，但我们不建议使用这些角色。作为最佳实践，我们建议您使用具有将计算机加入域所需最低权限的服务账户。

要委托具有将计算机加入域所需的最低权限的帐户，可以运行以下 PowerShell 命令。您必须在已安装 [为托管的 Microsoft AD 安装活动目录 Amazon 管理工具](ms_ad_install_ad_tools.md) 的已加入域的 Windows 计算机上运行这些命令。此外，您必须使用有权修改您的计算机 OU 或容器权限的账户。该 PowerShell 命令设置权限，允许服务帐户在域的默认计算机容器中创建计算机对象。

```
$AccountName = 'awsSeamlessDomain'
# DO NOT modify anything below this comment.
# Getting Active Directory information.
Import-Module 'ActiveDirectory'
$Domain = Get-ADDomain -ErrorAction Stop
$BaseDn = $Domain.DistinguishedName
$ComputersContainer = $Domain.ComputersContainer
$SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext'
[System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID
# Getting Service account Information.
$AccountProperties = Get-ADUser -Identity $AccountName
$AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value
# Getting ACL settings for the Computers container.
$ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer"
# Setting ACL allowing the service account the ability to create child computer objects in the Computers container.
$AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All'
$ObjectAcl.AddAccessRule($AddAccessRule)
Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"
```

如果您更喜欢使用图形用户界面（GUI），您可以使用 [向您的服务账户委派权限](ad_connector_getting_started.md#connect_delegate_privileges) 中所述的手动过程。

### 创建密钥以存储域服务账户
<a name="-create-secrets"></a>

您可以使用 Amazon Secrets Manager 存储域名服务帐户。有关更多信息，请参阅[创建 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn//secretsmanager/latest/userguide/create_secret.html)。

**注意**  
Secrets Manager 会产生相关费用。有关更多信息，请参阅《Amazon Secrets Manager User Guide》**中的 [Pricing](https://docs.amazonaws.cn//secretsmanager/latest/userguide/intro.html#asm_pricing)。

**创建密钥并存储域服务账户信息**

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.amazonaws.cn/secretsmanager/)。

1. 选择**存储新密钥**。

1. 在 **Store a new secret**（存储新密钥）页面上，执行以下操作：

   1. 在**密钥类型**下，选择**其他密钥类型**。

   1. 在**键/值对**下，执行以下操作：

      1. 在第一个框中，输入 **awsSeamlessDomainUsername**。在同一行的下一个框中，输入您服务账户的用户名。例如，如果您之前使用过该 PowerShell 命令，则服务帐户名称将为**awsSeamlessDomain**。
**注意**  
必须完全按照原样输入 **awsSeamlessDomainUsername**。确保前后均没有任何空格。否则，域加入将失败。  
![\[在 Amazon Secrets Manager 控制台的 “选择密钥类型” 页面上。在密钥类型下选择其他类型的密钥并输入 awsSeamlessDomainUsername 作为键值。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/secrets_manager_1.png)

      1. 选择**添加行**。

      1. 在新行的第一个框中输入 **awsSeamlessDomainPassword**。在同一行的下一个框中，输入服务账户密码。
**注意**  
必须完全按照原样输入 **awsSeamlessDomainPassword**。确保前后均没有任何空格。否则，域加入将失败。

      1. 在**加密密钥**下，保留默认值 `aws/secretsmanager`。选择此选项时， Amazon Secrets Manager 始终会对密钥进行加密。您也可以选择您创建的密钥。

      1. 选择**下一步**。

1. 在 “**密钥名称**” 下，使用以下格式输入包含您的目录 ID 的密钥名称，*d-xxxxxxxxx*替换为您的目录 ID：

   ```
   aws/directory-services/d-xxxxxxxxx/seamless-domain-join
   ```

   这将用于检索应用程序中的密钥。
**注意**  
您必须**aws/directory-services/*d-xxxxxxxxx*/seamless-domain-join**完全按原样输入，但要*d-xxxxxxxxxx*用您的目录 ID 替换。确保前后均没有空格。否则，域加入将失败。  
![\[在 Amazon Secrets Manager 控制台的配置密钥页面上。输入密钥名称并突出显示。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/secrets_manager_2.png)

1. 将其他所有内容都设置为默认值，然后选择**下一步**。

1. 在**配置自动轮换**下，选择**禁用自动轮换**，然后选择**下一步**。

   存储此密钥后，您可以为其启用轮换。

1. 查看设置，然后选择**存储**以保存更改。Secrets Manager 控制台将返回您账户中的密钥列表，并且列表中现在包含新的密钥。

1. 从列表中选择您新创建的密钥名称，并记下**密钥 ARN** 值。您需要在下一部分中使用该名称。

### 为域服务账户密钥启用轮换
<a name="seamless-linux-prereqs-turn-on-rotation"></a>

我们建议您定期轮换密钥以改善安全状况。

**为域服务账户密钥启用轮换**
+ 按照《*Amazon Secrets Manager 用户指南*》中[为 Amazon Secrets Manager 密钥设置自动轮换](https://docs.amazonaws.cn/secretsmanager/latest/userguide/rotate-secrets_turn-on-for-other.html)中的说明进行操作。

  对于步骤 5，使用《Amazon Secrets Manager 用户指南》**中的轮换模板 [Microsoft Active Directory 凭证](https://docs.amazonaws.cn/secretsmanager/latest/userguide/reference_available-rotation-templates.html#template-AD-password)。

  如需帮助，请参阅*Amazon Secrets Manager 用户指南*中的[Amazon Secrets Manager 轮换疑难解答](https://docs.amazonaws.cn/secretsmanager/latest/userguide/troubleshoot_rotation.html)。

### 创建所需 IAM policy 和角色
<a name="seamless-linux-prereqs-create-policy"></a>

使用以下先决条件步骤创建自定义策略，该策略允许对您的 Secrets Manager 无缝域加入密钥（您之前创建的）进行只读访问，并创建新的 Linux EC2 DomainJoin IAM 角色。

#### 创建 Secrets Manager IAM 读取策略
<a name="seamless-linux-prereqs-create-policy-step1"></a>

您可以使用 IAM 控制台创建策略，授予对 Secrets Manager 密钥的只读访问权限。

**创建 Secrets Manager IAM 读取策略**

1. 以有权创建 IAM 策略的用户 Amazon Web Services 管理控制台 身份登录。然后在上打开 IAM 控制台[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中的**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 选择 **JSON** 选项卡，然后复制以下 JSON 策略文档中的文本。然后将其粘贴到 **JSON** 文本框中。
**注意**  
确保将区域和资源 ARN 替换为您之前创建的密钥的实际区域和资源 ARN。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:xxxxxxxxx:secret:aws/directory-services/d-xxxxxxxxx/seamless-domain-join"
               ]
           }
       ]
   }
   ```

1. 完成后，选择**下一步**。策略验证程序将报告任何语法错误。有关更多信息，请参阅[验证 IAM policy](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_policy-validator.html)。

1. 在**检查策略**页面上，输入一个策略名称，例如 **SM-Secret-Linux-DJ-*d-xxxxxxxxxx*-Read**。查看**摘要**部分，以查看您的策略授予的权限。选择**创建策略**，保存更改。托管策略列表中将显示新策略，并且现在已准备好附加到身份中。

**注意**  
我们建议您为每个密钥创建一个策略。这样做可以确保实例只能访问相应的密钥，并在实例受损时将影响降至最低。

#### 创建 Linux EC2 DomainJoin 角色
<a name="seamless-linux-prereqs-create-policy-step2"></a>

您可以使用 IAM 控制台创建用于域加入 Linux EC2 实例的角色。

**创建 Linux EC2 DomainJoin 角色**

1. 以有权创建 IAM 策略的用户 Amazon Web Services 管理控制台 身份登录。然后在上打开 IAM 控制台[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在导航窗格中的**访问管理**下，选择**角色**。

1. 在内容窗格中，选择**创建角色**。

1. 在**选择受信任实体的类型**下，选择 **Amazon 服务**。

1. 在**使用案例**下，选择 **EC2**，然后选择**下一步**。  
![\[在 IAM 控制台的 “选择可信实体” 页面上。 Amazon 服务和 EC2 已选中。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/iam-console-trusted-entity.png)

1. 对于**筛选策略**，执行以下操作：

   1. 输入 **AmazonSSMManagedInstanceCore**。然后选择列表中该项目的复选框。

   1. 输入 **AmazonSSMDirectoryServiceAccess**。然后选择列表中该项目的复选框。

   1. 输入 **SM-Secret-Linux-DJ-*d-xxxxxxxxxx*-Read**（或您在上一过程中创建的策略名称）。然后选择列表中该项目的复选框。

   1. 添加了上面列出的三个策略后，选择**创建角色**。
**注意**  
Amazon SSMDirectory ServiceAccess 提供将实例加入由管理的活动目录的权限 Amazon Directory Service。Amazon SSMManaged InstanceCore 提供使用该 Amazon Systems Manager 服务所需的最低权限。有关创建具有这些权限的角色的更多信息，以及您可以分配给 IAM 角色的其他权限和策略的信息，请参阅《Amazon Systems Manager 用户指南》**中的[为 Systems Manager 创建 IAM 实例配置文件](https://docs.amazonaws.cn/systems-manager/latest/userguide/setup-instance-profile.html)。

1. 在**角色名称**字段中，输入新角色的名称，如 **LinuxEC2DomainJoin** 或您喜欢的其他名称。

1. （可选）对于**角色描述**，请输入描述。

1. （可选）在**步骤 3：添加标签**下选择**添加新标签**以添加标签。标签键值对用于组织、跟踪或控制此角色的访问权限。

1. 选择**创建角色**。

## 无缝加入 Linux 实例
<a name="seamless-linux-join-instance"></a>

**无缝加入 Linux 实例**

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 从导航栏的区域选择器中，选择与现有目录 Amazon Web Services 区域 相同的目录。

1. 在 **EC2 控制面板**的**启动实例**部分，选择**启动实例**。

1. 在**启动实例**页面的**名称和标签**部分下，输入您要用于 Linux EC2 实例的名称。

1.  *（可选）*选择**添加其他标签**，添加一个或多个标签键值对，以组织、跟踪或控制此 EC2 实例的访问权限。

1. 在**应用程序和操作系统映像（Amazon 机器映像）**部分中，选择您想要启动的 Linux AMI。
**注意**  
使用的 AMI 必须具有 Amazon Systems Manager （SSM 代理）版本 2.3.1644.0 或更高版本。要通过从该 AMI 启动实例来检查 AMI 中已安装的 SSM Agent 版本，请参阅[获取当前安装的 SSM Agent 版本](https://docs.amazonaws.cn/systems-manager/latest/userguide/ssm-agent-get-version.html)。如果您需要升级 SSM Agent，请参阅[在适用于 Linux 的 EC2 实例上安装和配置 SSM Agent](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。  
SSM 在将 Linux 实例加入 Active Directory 域时使用 `aws:domainJoin` 插件。该插件将 Linux 实例的主机名更改为 EC2 AMAZ-*XXXXXXX* 格式。有关 `aws:domainJoin` 的更多信息，请参阅《Amazon Systems Manager 用户指南》**中的 [Amazon Systems Manager 命令文档插件参考](https://docs.amazonaws.cn//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)。

1. 在**实例类型**部分，从**实例类型**下拉列表中选择要使用的实例类型。

1. 在**密钥对（登录）**部分，您可以选择创建新密钥对，或从现有密钥对中进行选择。要创建新的密钥对，请选择**新建新密钥对**。输入密钥对的名称，然后为**密钥对类型**和**私钥文件格式**选择一个选项。要以可与 OpenSSH 一起使用的格式保存私钥，请选择 **pem**。要以可与 PuTTY 一起使用的格式保存私钥，请选择 **ppk**。选择**创建密钥对**。您的浏览器会自动下载私有密钥文件。将私有密钥文件保存在安全位置。
**重要**  
这是您保存私有密钥文件的唯一机会。

1. 在**启动实例**页面的**网络设置**部分下，选择**编辑**。从 **VPC – *必需***下拉列表中选择创建目录的 **VPC**。

1. 从**子网**下拉列表中选择 VPC 中的其中一个公有子网。选择的子网必须将所有外部流量都路由到互联网网关。否则将无法远程连接到实例。

   有关如何连接到互联网网关的更多信息，请参阅《Amazon VPC 用户指南》**中的[使用互联网网关连接到互联网](https://docs.amazonaws.cn//vpc/latest/userguide/VPC_Internet_Gateway.html)。

1. 在**自动分配公有 IP** 下，选择**启用**。

   有关公共和私有 IP 寻址的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 实例 IP 寻址](https://docs.amazonaws.cn/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。

1. 对于**防火墙（安全组）**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 对于**配置存储**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 选择**高级详细信息**部分，从**域加入目录**下拉列表中选择您的域。
**注意**  
选择域加入目录后，您可能会看到：  

![\[选择域加入目录时出现错误消息。您现有的 SSM 文档存在错误。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

当 EC2 启动向导识别到某个现有 SSM 文档包含意外属性时，会发生此错误。您可以执行以下操作之一：  
如果您之前编辑了 SSM 文档且属性为预期属性，请选择关闭并继续启动 EC2 实例，不做任何更改。
选择“在此处删除现有 SSM 文档”链接以删除 SSM 文档。这将允许创建包含正确属性的 SSM 文档。启动 EC2 实例时，将自动创建 SSM 文档。

1. 对于 **IAM 实例配置文件**，请选择您之前在先决条件部分**步骤 2：创建 Linux EC2 DomainJoin 角色中创建的 IAM 角色**。

1. 选择**启动实例**。

**注意**  
如果您要使用 SUSE Linux 进行无缝域加入，则需要重新启动才能进行身份验证。要从 Linux 终端重启 SUSE，请键入 **sudo reboot**。

# 将亚马逊 EC2 Linux 实例无缝加入共享的 Amazon 托管微软 AD
<a name="seamlessly_join_linux_to_shared_MAD"></a>

在此过程中，将 Amazon EC2 Linux 实例无缝加入共享的 Amazon Managed Microsoft AD 为此，您需要在要启动 EC2 Linux 实例的账户的 EC2 实例角色中创建 IA Amazon Secrets Manager M 读取策略。该账户在此过程中被称为 `Account 2`。此实例将使用从另一个账户（称为 `Account 1`）共享的 Amazon Managed Microsoft AD。

## 先决条件
<a name="seamlessly_join_linux_to_shared_MAD_prereqs"></a>

您需要先完成以下操作，然后才能将 Amazon EC2 Linux 实例无缝加入共享的 Amazon 托管 Microsoft AD：
+ [教程：共享您的 Amazon 托管 Microsoft AD 目录以实现无缝加入 EC2 域名](ms_ad_tutorial_directory_sharing.md)教程中的步骤 1 到 3。本教程将引导你设置网络和共享 Amazon 托管 Microsoft AD。
+ [将亚马逊 EC2 Linux 实例无缝加入你的 Amazon 托管微软 AD 活动目录](seamlessly_join_linux_instance.md)中概述了此过程。

## 步骤 1：在账户 2 中创建 Linux EC2 DomainJoin 角色
<a name="seamlessly_join_linux_to_shared_MAD_step_1"></a>

在此步骤中，您可以使用 IAM 控制台创建用于在登录 `Account 2` 时通过域加入 EC2 Linux 实例的 IAM 角色。

**创建 Linux EC2 DomainJoin 角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格中的**访问管理**下，选择**角色**。

1. 在 **Roles**（角色）页面上，选择 **Create role**（创建角色）。

1. 在 **选择受信任实体的类型** 下，选择 **Amazon 服务**。

1. 在**使用案例**下，选择 **EC2**，然后选择**下一步**。

1. 对于**筛选策略**，执行以下操作：

   1. 输入 `AmazonSSMManagedInstanceCore`。然后在列表中选择该项目的复选框。

   1. 输入 `AmazonSSMDirectoryServiceAccess`。然后在列表中选择该项目的复选框。

   1. 添加这些策略后，选择**创建角色**。
**注意**  
`AmazonSSMDirectoryServiceAccess`提供将实例加入由管理的 Active Directory 的权限 Amazon Directory Service。 `AmazonSSMManagedInstanceCore`提供了使用所需的最低权限 Amazon Systems Manager。有关创建具有这些权限的角色的更多信息，以及您可以分配给 IAM 角色的其他权限和策略的信息，请参阅《Amazon Systems Manager 用户指南》**中的[为 Systems Manager 配置所需的实例权限](https://docs.amazonaws.cn/systems-manager/latest/userguide/setup-instance-permissions.html)。

1. 在**角色名称**字段中，输入新角色的名称，如 `LinuxEC2DomainJoin` 或您喜欢的其他名称。

1. *（可选）*对于**角色描述**，请输入描述。

1. *（可选）*在**步骤 3：添加标签**下选择**添加新标签**以添加标签。标签键值对用于组织、跟踪或控制此角色的访问权限。

1. 选择**创建角色**。

## 步骤 2：创建跨账户资源访问权限以共享 Amazon Secrets Manager 机密
<a name="seamlessly_join_linux_to_shared_MAD_step_2"></a>

下一节是需要满足的其他要求，才能将 EC2 Linux 实例与共享的 Amazon 托管 Microsoft AD 无缝连接。这些要求包括创建资源策略并将其附加到相应的服务和资源。

要允许账户中的用户访问另一个账户中的 Amazon Secrets Manager 密钥，您必须在资源策略和身份策略中同时允许访问权限。这种类型的访问权限称为[跨账户资源访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

这种类型的访问权限不同于授予 Secrets Manager 密钥所在账户中的身份访问权限。您还必须允许身份使用密钥加密的 [Amazon Key Management Service](https://docs.amazonaws.cn/kms/latest/developerguide/overview.html)（KMS）密钥。此权限是必要的，因为您不能使用 Amazon 托管密钥 (`aws/secretsmanager`) 进行跨账户访问。相反，您需要使用您创建的 KMS 密钥加密密钥，然后向其中附加密钥策略。要更改密钥的加密密钥，请参阅[修改 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/manage_update-secret.html)。

**注意**  
根据您使用的密钥 Amazon Secrets Manager，会收取与之相关的费用。有关当前完整定价列表，请参阅 [Amazon Secrets Manager 定价](https://www.amazonaws.cn/secrets-manager/pricing/)。你可以使用 Secrets Manager 创建的来免费加密你的秘密。 Amazon 托管式密钥 `aws/secretsmanager`如果您创建自己的 KMS 密钥来加密您的密钥，则按当前 Amazon KMS 费率向您 Amazon 收费。有关更多信息，请参阅[Amazon Key Management Service 定价](https://www.amazonaws.cn/kms/pricing/)。

以下步骤允许您创建资源策略，使用户能够将 EC2 Linux 实例无缝加入共享的 Amazon 托管 Microsoft AD。

**将资源策略附加到 Account 1 中的密钥**

1. 打开 Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.amazonaws.cn/secretsmanager/)。

1. 从密钥列表中，选择您在[先决条件](#seamlessly_join_linux_to_shared_MAD_prereqs)期间创建的**密钥**。

1. 在**密钥的详细信息页面**的**概述**选项卡下，向下滚动到**资源权限**。

1. 选择**编辑权限**。

   1. 在策略字段中输入以下策略。以下策略允许EC2DomainJoin中的 **Linux** `Account 2` 访问中的密钥`Account 1`。将 ARN 值替换为您在[步骤 1](#seamlessly_join_linux_to_shared_MAD_step_1) 中创建的 `LinuxEC2DomainJoin` 角色 `Account 2` 的 ARN 值。要使用此策略，请参阅[将权限策略附加到 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)。

------
#### [ JSON ]

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "AWS": "arn:aws:iam::123456789012:role/LinuxEC2DomainJoin"
           },
           "Action": "secretsmanager:GetSecretValue",
           "Resource": "*"
         }
       ]
     }
     ```

------

**将语句添加到 Account 1 中 KMS 密钥的密钥政策中**

1. 打开 Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.amazonaws.cn/secretsmanager/)。

1. 在左侧导航栏中，选择**客户管理型密钥**。

1. 在**客户管理型密钥**页面上，选择您创建的密钥。

1. 在**密钥详细信息**页面上，导航到**密钥政策**，然后选择**编辑**。

1. 以下密钥政策语句允许 `Account 2` 中的 `ApplicationRole` 使用 `Account 1` 中的 KMS 密钥来解密 `Account 1` 中的密钥。要使用此语句，请将其添加到 KMS 密钥的密钥策略中。有关更多信息，请参阅[更改密钥策略](https://docs.amazonaws.cn/kms/latest/developerguide/key-policy-modifying.html)。

   ```
   {
   {
     "Effect": "Allow",
     "Principal": {
       "AWS": "arn:aws:iam::Account2:role/ApplicationRole"
     },
     "Action": [
       "kms:Decrypt",
       "kms:DescribeKey"
     ],
     "Resource": "*"
   }
   ```

**为 Account 2 中的身份创建身份策略**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格中的**访问管理**下，选择**策略**。

1. 选择 **Create Policy (创建策略)**。在**策略编辑器**中，选择 **JSON**。

1. 以下策略允许 `Account 2` 中的 `ApplicationRole` 访问 `Account 1` 中的密钥，并通过使用同样位于 `Account 1` 中的加密密钥来解密密钥值。您可以在 Secrets Manager 控制台的**密钥详细信息**页面的**密钥 ARN** 下方找到您的密钥 ARN。或者，您可以调用 [describe-secret](https://docs.amazonaws.cn/cli/latest/reference/secretsmanager/describe-secret.html) 以识别密钥的 ARN。将资源 ARN 替换为密钥 ARN 和 `Account 1` 的资源 ARN。要使用此策略，请参阅[将权限策略附加到 Amazon Secrets Manager 密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/auth-and-access_resource-policies.html)。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "secretsmanager:GetSecretValue",
         "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretName-AbCdEf"
       },
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt",
           "kms:Describekey"
         ],
         "Resource": "arn:aws:kms:us-east-1:111122223333:key/Your_Encryption_Key"
       }
     ]
   }
   ```

------

1. 选择**下一步**，然后选择**保存更改**。

1. 在[Attach a resource policy to the secret in Account 1](#step1ResourcePolicy)中查找并选择您在 `Account 2` 中创建的角色。

1. 在**添加权限**下，选择**附加策略**。

1. 在搜索栏中，找到您在[Add a statement to the key policy for the KMS key in Account 1](#step2KeyPolicy)中创建的策略，并选择将该策略添加到角色的框。然后选择**添加权限**。

## 步骤 3：无缝加入 Linux 实例
<a name="seamlessly_join_linux_to_shared_MAD_prereqs_step_3"></a>

现在，您可以使用以下步骤将您的 EC2 Linux 实例无缝加入共享的 Amazon 托管 Microsoft AD。

**无缝加入 Linux 实例**

1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 从导航栏的区域选择器中，选择与现有目录 Amazon Web Services 区域 相同的目录。

1. 在 **EC2 控制面板**的**启动实例**部分，选择**启动实例**。

1. 在**启动实例**页面的**名称和标签**部分下，输入您要用于 Linux EC2 实例的名称。

1.  *（可选）*选择**添加其他标签**，添加一个或多个标签键值对，以组织、跟踪或控制此 EC2 实例的访问权限。

1. 在**应用程序和操作系统映像（Amazon 机器映像）**部分中，选择您想要启动的 Linux AMI。
**注意**  
使用的 AMI 必须具有 Amazon Systems Manager （SSM 代理）版本 2.3.1644.0 或更高版本。要通过从该 AMI 启动实例来检查 AMI 中已安装的 SSM Agent 版本，请参阅[获取当前安装的 SSM Agent 版本](https://docs.amazonaws.cn/systems-manager/latest/userguide/ssm-agent-get-version.html)。如果您需要升级 SSM Agent，请参阅[在适用于 Linux 的 EC2 实例上安装和配置 SSM Agent](https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。  
SSM 在将 Linux 实例加入 Active Directory 域时使用 `aws:domainJoin` 插件。该插件将 Linux 实例的主机名更改为 EC2 AMAZ-*XXXXXXX* 格式。有关 `aws:domainJoin` 的更多信息，请参阅《Amazon Systems Manager 用户指南》**中的 [Amazon Systems Manager 命令文档插件参考](https://docs.amazonaws.cn//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)。

1. 在**实例类型**部分，从**实例类型**下拉列表中选择要使用的实例类型。

1. 在**密钥对（登录）**部分，您可以选择创建新密钥对，或从现有密钥对中进行选择。要创建新的密钥对，请选择**新建新密钥对**。输入密钥对的名称，然后为**密钥对类型**和**私钥文件格式**选择一个选项。要以可与 OpenSSH 一起使用的格式保存私钥，请选择 **pem**。要以可与 PuTTY 一起使用的格式保存私钥，请选择 **ppk**。选择**创建密钥对**。您的浏览器会自动下载私有密钥文件。将私有密钥文件保存在安全位置。
**重要**  
这是您保存私有密钥文件的唯一机会。

1. 在**启动实例**页面的**网络设置**部分下，选择**编辑**。从 **VPC – *必需***下拉列表中选择创建目录的 **VPC**。

1. 从**子网**下拉列表中选择 VPC 中的其中一个公有子网。选择的子网必须将所有外部流量都路由到互联网网关。否则将无法远程连接到实例。

   有关如何连接到互联网网关的更多信息，请参阅《Amazon VPC 用户指南》**中的[使用互联网网关连接到互联网](https://docs.amazonaws.cn//vpc/latest/userguide/VPC_Internet_Gateway.html)。

1. 在**自动分配公有 IP** 下，选择**启用**。

   有关公共和私有 IP 寻址的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 实例 IP 寻址](https://docs.amazonaws.cn/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。

1. 对于**防火墙（安全组）**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 对于**配置存储**设置，您可以使用默认设置或进行更改以满足您的需求。

1. 选择**高级详细信息**部分，从**域加入目录**下拉列表中选择您的域。
**注意**  
选择域加入目录后，您可能会看到：  

![\[选择域加入目录时出现错误消息。您现有的 SSM 文档存在错误。\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

当 EC2 启动向导识别到某个现有 SSM 文档包含意外属性时，会发生此错误。您可以执行以下操作之一：  
如果您之前编辑了 SSM 文档且属性为预期属性，请选择关闭并继续启动 EC2 实例，不做任何更改。
选择“在此处删除现有 SSM 文档”链接以删除 SSM 文档。这将允许创建包含正确属性的 SSM 文档。启动 EC2 实例时，将自动创建 SSM 文档。

1. 对于 **IAM 实例配置文件**，请选择您之前在先决条件部分**步骤 2：创建 Linux EC2 DomainJoin 角色中创建的 IAM 角色**。

1. 选择**启动实例**。

**注意**  
如果您要使用 SUSE Linux 进行无缝域加入，则需要重新启动才能进行身份验证。要从 Linux 终端重启 SUSE，请键入 **sudo reboot**。

# 手动将亚马逊 EC2 Linux 实例加入您的 Amazon 托管微软 AD 活动目录
<a name="join_linux_instance"></a>

除亚马逊 EC2 Windows 实例外，您还可以将某些亚马逊 EC2 Linux 实例加入您的 Amazon 托管微软 AD 活动目录。支持以下 Linux 实例分发版和版本：
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2（64 位 x86）
+ Amazon Linux 2023 AMI
+ Red Hat Enterprise Linux 8 (HVM)（64 位 x86）
+ Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux 企业服务器 15 SP1

**注意**  
其他 Linux 分发版和版本可能会正常运行，但未经过测试。

## 将 Linux 实例加入你的 Amazon 托管微软 AD
<a name="join_linux_prereq"></a>

必须先按照 [无缝加入 Linux 实例](seamlessly_join_linux_instance.md#seamless-linux-join-instance) 中指定的步骤启动实例，然后才能将 Amazon Linux、CentOS、Red Hat 或 Ubuntu 实例加入目录。

**重要**  
以下某些过程如果未正确执行，可能会使实例无法访问或不可用。因此，我们强烈建议在执行这些过程之前对实例创建备份或拍摄快照。

**将 Linux 实例加入目录**  
使用以下选项卡之一对特定 Linux 实例执行步骤：

------
#### [ Amazon Linux ]<a name="amazonlinux"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果要手动设置，请参阅 Amazon 知识中心的[如何为私有 EC2 实例分配静态 DNS 服务器](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)，以了解有关为特定 Linux 分发版和版本设置持久性 DNS 服务器的指导。

1. 确保 64 位 Amazon Linux 实例为最新状态。

   ```
   sudo yum -y update
   ```

1. 在 Linux 实例上安装所需的 Amazon Linux 软件包。
**注意**  
其中一些程序包可能已安装。  
安装程序包时，可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。  
Amazon Linux  

   ```
   sudo yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
   ```
**注意**  
有关确定您所使用的 Amazon Linux 版本的帮助，请参阅《**Amazon EC2 用户指南（适用于 Linux 实例）》中的[识别 Amazon Linux 映像](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#amazon-linux-image-id)。

1. 使用以下命令将实例加入目录。

   ```
   sudo realm join -U join_account@EXAMPLE.COM example.com --verbose
   ```  
*join\$1account@EXAMPLE.COM*  
*example.com*网域中具有域加入权限的账户。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 实例重新启动后，使用任何 SSH 客户端连接到该实例，然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 将以下内容添加到 `sudoers` 文件的底部并保存该文件。

      ```
      ## Add the "Amazon Delegated Administrators" group from the example.com domain.
      %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------
#### [ CentOS ]<a name="centos"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果要手动设置，请参阅 Amazon 知识中心的[如何为私有 EC2 实例分配静态 DNS 服务器](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)，以了解有关为特定 Linux 分发版和版本设置持久性 DNS 服务器的指导。

1. 确保 CentOS 7 实例为最新状态。

   ```
   sudo yum -y update
   ```

1. 在 Linux 实例上安装所需 CentOS 7 软件包。
**注意**  
其中一些程序包可能已安装。  
安装程序包时，可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

   ```
   sudo yum -y install sssd realmd krb5-workstation samba-common-tools
   ```

1. 使用以下命令将实例加入目录。

   ```
   sudo realm join -U join_account@example.com example.com --verbose
   ```  
*join\$1account@example.com*  
*example.com*网域中具有域加入权限的账户。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 实例重新启动后，使用任何 SSH 客户端连接到该实例，然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 将以下内容添加到 `sudoers` 文件的底部并保存该文件。

      ```
      ## Add the "Amazon Delegated Administrators" group from the example.com domain.
      %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------
#### [ Red Hat ]<a name="redhat"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果要手动设置，请参阅 Amazon 知识中心的[如何为私有 EC2 实例分配静态 DNS 服务器](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)，以了解有关为特定 Linux 分发版和版本设置持久性 DNS 服务器的指导。

1. 确保 Red Hat - 64 位实例为最新状态。

   ```
   sudo yum -y update
   ```

1. 在 Linux 实例上安装所需的 Red Hat 程序包。
**注意**  
其中一些程序包可能已安装。  
安装程序包时，可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

   ```
   sudo yum -y install sssd realmd krb5-workstation samba-common-tools
   ```

1. 使用以下命令将实例加入目录。

   ```
   sudo realm join -v -U join_account example.com --install=/
   ```  
*join\$1account*  
域中具有*example.com*域加入权限的帐户的**AMAccount名称**。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 实例重新启动后，使用任何 SSH 客户端连接到该实例，然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 将以下内容添加到 `sudoers` 文件的底部并保存该文件。

      ```
      ## Add the "Amazon Delegated Administrators" group from the example.com domain.
      %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------
#### [ SUSE ]<a name="suse"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 配置 Linux 实例以使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果您想手动设置，请参阅 Amazon 知识中心中的[如何将静态 DNS 服务器分配给私有 Amazon EC2 实例，以](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指导。

1. 确保您的 SUSE Linux 15 实例为最新状态。

   1. 连接程序包存储库。

      ```
      sudo SUSEConnect -p PackageHub/15.1/x86_64
      ```

   1. 更新 SUSE。

      ```
      sudo zypper update -y
      ```

1. 在 Linux 实例上安装所需的 SUSE Linux 15 程序包。
**注意**  
其中一些程序包可能已安装。  
安装程序包时，可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

   ```
   sudo zypper -n install realmd adcli sssd sssd-tools sssd-ad samba-client krb5-client
   ```

1. 使用以下命令将实例加入目录。

   ```
   sudo realm join -U join_account example.com --verbose
   ```  
*join\$1account*  
具有域加入权限的*example.com*域中的 s AMAccount 名称。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   …
   realm: Couldn't join realm: Enabling SSSD in nsswitch.conf and PAM failed.
   ```

   请注意，应该有以下两项返回内容。

   ```
   ! Couldn't authenticate with keytab while discovering which salt to use:
   ! Enabling SSSD in nsswitch.conf and PAM failed.
   ```

1. 在 **PAM** 中手动启用 **SSSD**。

   ```
   sudo pam-config --add --sss
   ```

1. 编辑 nsswitch.conf 以在 nsswitch.conf 中启用 SSSD

   ```
   sudo vi /etc/nsswitch.conf
   ```

   ```
   passwd: compat sss
   group:  compat sss
   shadow: compat sss
   ```

1. 将以下行添加到/etc/pam.d/common-session 以在初始登录时自动创建主目录

   ```
   sudo vi /etc/pam.d/common-session
   ```

   ```
   session optional pam_mkhomedir.so skel=/etc/skel umask=077
   ```

1. 重新引导实例以完成加入域的过程。

   ```
   sudo reboot
   ```

1. 使用任意 SSH 客户端重新连接到实例，验证域加入操作是否已成功完成并完成其他步骤

   1. 确认已在域中注册实例

      ```
      sudo realm list
      ```

      ```
      example.com
        type: kerberos
        realm-name: EXAMPLE.COM
        domain-name: example.com
        configured: kerberos-member
        server-software: active-directory
        client-software: sssd
        required-package: sssd-tools
        required-package: sssd
        required-package: adcli
        required-package: samba-client
        login-formats: %U@example.com
        login-policy: allow-realm-logins
      ```

   1. 验证 SSSD 守护程序的状态

      ```
      systemctl status sssd
      ```

      ```
      sssd.service - System Security Services Daemon
         Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled)
         Active: active (running) since Wed 2020-04-15 16:22:32 UTC; 3min 49s ago
       Main PID: 479 (sssd)
          Tasks: 4
         CGroup: /system.slice/sssd.service
                 ├─479 /usr/sbin/sssd -i --logger=files
                 ├─505 /usr/lib/sssd/sssd_be --domain example.com --uid 0 --gid 0 --logger=files
                 ├─548 /usr/lib/sssd/sssd_nss --uid 0 --gid 0 --logger=files
                 └─549 /usr/lib/sssd/sssd_pam --uid 0 --gid 0 --logger=files
      ```

1. 允许用户通过 SSH 和控制台进行访问

   ```
   sudo realm permit join_account@example.com
   ```

   允许通过 SSH 和控制台访问域组

   ```
   sudo realm permit -g 'Amazon Delegated Administrators'
   ```

   或者允许所有用户访问

   ```
   sudo realm permit --all
   ```

1. 设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 13. 实例重新启动后，使用任何 SSH 客户端连接到该实例，然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中：

   1. 使用以下命令打开 sudoers 文件：

      ```
      sudo visudo
      ```

   1. 将以下内容添加到 sudoers 文件的底部并保存该文件。

      ```
      ## Add the "Domain Admins" group from the awsad.com domain.
      %AWS\ Delegated\ Administrators@example.com ALL=(ALL) NOPASSWD: ALL
      ```

------
#### [ Ubuntu ]<a name="ubuntu"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果要手动设置，请参阅 Amazon 知识中心的[如何为私有 EC2 实例分配静态 DNS 服务器](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)，以了解有关为特定 Linux 分发版和版本设置持久性 DNS 服务器的指导。

1. 确保您的 Ubuntu - 64 位实例为最新状态。

   ```
   sudo apt-get update
   sudo apt-get -y upgrade
   ```

1. 在 Linux 实例上安装所需的 Ubuntu 程序包。
**注意**  
其中一些程序包可能已安装。  
安装程序包时，可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

   ```
   sudo apt-get -y install sssd realmd krb5-user samba-common packagekit adcli
   ```

1. 禁用反向 DNS 解析，并将默认领域设置为您的域的 FQDN。Ubuntu 实例在 DNS 中**必须** 可以反向解析，领域才能使用。否则，您必须在 /etc/krb5.conf 中禁用 DNS，如下所示：

   ```
   sudo vi /etc/krb5.conf
   ```

   ```
   [libdefaults]
   default_realm = EXAMPLE.COM
   rdns = false
   ```

1. 使用以下命令将实例加入目录。

   ```
   sudo realm join -U join_account example.com --verbose
   ```  
*join\$1account@example.com*  
域中具有*example.com*域加入权限的帐户的**AMAccount名称**。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   ...
    * Successfully enrolled machine in realm
   ```

1. 设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 实例重新启动后，使用任何 SSH 客户端连接到该实例，然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 将以下内容添加到 `sudoers` 文件的底部并保存该文件。

      ```
      ## Add the "Amazon Delegated Administrators" group from the example.com domain.
      %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------

## 限制账户登录访问
<a name="linux_filter"></a>

因为所有账户都是在 Active Directory 中定义的，因此默认情况下，目录中的所有用户都可以登录该实例。可以在 **sssd.conf** 中使用 **ad\$1access\$1filter** 来仅允许特定用户登录到实例。例如：

```
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
```

*memberOf*  
指示仅当用户是特定组的成员时，才允许他们访问实例。

*cn*  
应具有访问权限的组的通用名称。在此示例中，组名为*admins*。

*ou*  
这是上面的组所在的组织单位。在此示例中，OU 是*Testou*。

*dc*  
这是您的域的域组成部分。在本示例中，*example*。

*dc*  
这是附加域组成部分。在本示例中，*com*。

您必须手动将 **ad\$1access\$1filter** 添加到 **/etc/sssd/sssd.conf**。

在文本编辑器中打开 **/etc/sssd/sssd.conf** 文件。

```
sudo vi /etc/sssd/sssd.conf
```

执行此操作之后，**sssd.conf** 可能类似于下面这样：

```
[sssd]
domains = example.com
config_file_version = 2
services = nss, pam

[domain/example.com]
ad_domain = example.com
krb5_realm = EXAMPLE.COM
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
```

需要重启 sssd 服务配置才能生效：

```
sudo systemctl restart sssd.service
```

或者，您也可以使用：

```
sudo service sssd restart
```

因为所有账户都是在 Active Directory 中定义的，因此默认情况下，目录中的所有用户都可以登录该实例。可以在 **sssd.conf** 中使用 **ad\$1access\$1filter** 来仅允许特定用户登录到实例。

例如：

```
ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
```

*memberOf*  
指示仅当用户是特定组的成员时，才允许他们访问实例。

*cn*  
应具有访问权限的组的通用名称。在此示例中，组名为*admins*。

*ou*  
这是上面的组所在的组织单位。在此示例中，OU 是*Testou*。

*dc*  
这是您的域的域组成部分。在本示例中，*example*。

*dc*  
这是附加域组成部分。在本示例中，*com*。

您必须手动将 **ad\$1access\$1filter** 添加到 **/etc/sssd/sssd.conf**。

1. 在文本编辑器中打开 **/etc/sssd/sssd.conf** 文件。

   ```
   sudo vi /etc/sssd/sssd.conf
   ```

1. 执行此操作之后，**sssd.conf** 可能类似于下面这样：

   ```
   [sssd]
   domains = example.com
   config_file_version = 2
   services = nss, pam
   
   [domain/example.com]
   ad_domain = example.com
   krb5_realm = EXAMPLE.COM
   realmd_tags = manages-system joined-with-samba
   cache_credentials = True
   id_provider = ad
   krb5_store_password_if_offline = True
   default_shell = /bin/bash
   ldap_id_mapping = True
   use_fully_qualified_names = True
   fallback_homedir = /home/%u@%d
   access_provider = ad
   ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
   ```

1. 需要重启 sssd 服务配置才能生效：

   ```
   sudo systemctl restart sssd.service
   ```

   或者，您也可以使用：

   ```
   sudo service sssd restart
   ```

## ID 映射
<a name="managed-ad-id-mapping"></a>

可以通过两种方法执行 ID 映射，以维护 UNIX/Linux 用户标识符（UID）和组标识符（GID）以及 Windows 和 Active Directory 安全标识符（SID）身份之间的统一体验。这些方法如下：

1. 集中化

1. 分布式

**注意**  
Active Directory 中的集中式用户身份映射需要可移植操作系统接口或 POSIX。

**集中式用户身份映射**  
Active Directory 或其他轻型目录访问协议（LDAP）服务为 Linux 用户提供 UID 和 GID。在 Active Directory 中，如果配置了 POSIX 扩展，这些标识符将存储在用户的属性中：
+ UID：Linux 用户名（字符串）
+ UID 号：Linux 用户 ID 号（整数）
+ GID 号：Linux 组 ID 号（整数）

要将 Linux 实例配置为使用 Active Directory 提供的 UID 和 GID，请在 sssd.conf 文件中设置 `ldap_id_mapping = False`。在设置此值之前，请确认您已向 Active Directory 中的用户和组添加了 UID、UID 号和 GID 号。

**分布式用户身份映射**  
如果 Active Directory 没有 POSIX 扩展名，或者如果您选择不集中管理身份映射，Linux 可以计算 UID 和 GID 值。Linux 使用用户的唯一安全标识符（SID）来保持一致性。

要配置分布式用户 ID 映射，请在 sssd.conf 文件中设置 `ldap_id_mapping = True`。

**常见问题**  
如果设置 `ldap_id_mapping = False`，有时启动 SSSD 服务会失败。此失败的原因是由于更改 UIDs 不支持。建议在每次从 ID 映射更改为 POSIX 属性，或从 POSIX 属性更改为 ID 映射时删除 SSSD 缓存。有关 ID 映射与 ldap\$1id\$1mapping 参数的更多详细信息，请参阅 Linux 命令行中的 sssd-ldap(8) 手册页。

## 连接到 Linux 实例
<a name="linux_connect"></a>

当用户使用 SSH 客户端连接到实例时，系统会提示他们输入用户名。用户可以采用 `username@example.com` 或 `EXAMPLE\username` 格式输入用户名。响应将类似于以下内容，具体取决于您使用的 Linux 发行版：

**Amazon Linux、Red Hat Enterprise Linux 和 CentOS Linux**

```
login as: johndoe@example.com
johndoe@example.com's password:
Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX
```

**SUSE Linux**

```
SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit)

As "root" (sudo or sudo -i) use the:
  - zypper command for package management
  - yast command for configuration management

Management and Config: https://www.suse.com/suse-in-the-cloud-basics
Documentation: https://www.suse.com/documentation/sles-15/
Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud

Have a lot of fun...
```

**Ubuntu Linux**

```
login as: admin@example.com
admin@example.com@10.24.34.0's password:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 18 22:03:35 UTC 2020

  System load:  0.01              Processes:           102
  Usage of /:   18.6% of 7.69GB   Users logged in:     2
  Memory usage: 16%               IP address for eth0: 10.24.34.1
  Swap usage:   0%
```

# 使用 Winbind 手动将亚马逊 EC2 Linux 实例加入你的 Amazon 托管微软 AD 活动目录
<a name="join_linux_instance_winbind"></a>

您可以使用 Winbind 服务将 Amazon EC2 Linux 实例手动加入 Amazon Managed Microsoft AD Active Directory 域。这使您现有的本地 Active Directory 用户能够在访问加入您的 Amazon 托管 Microsoft AD 活动目录的 Linux 实例时使用其活动目录凭据。支持以下 Linux 实例分发版和版本：
+ Amazon Linux AMI 2018.03.0
+ Amazon Linux 2（64 位 x86）
+ Amazon Linux 2023 AMI
+ Red Hat Enterprise Linux 8 (HVM)（64 位 x86）
+ Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS
+ CentOS 7 x86-64
+ SUSE Linux 企业服务器 15 SP1

**注意**  
其他 Linux 分发版和版本可能会正常运行，但未经过测试。

## 将 Linux 实例加入你的 Amazon 托管微软 AD 活动目录
<a name="join_linux_winbind_prereq"></a>

**重要**  
以下某些过程如果未正确执行，可能会使实例无法访问或不可用。因此，我们强烈建议在执行这些过程之前对实例创建备份或拍摄快照。

**将 Linux 实例加入目录**  
使用以下选项卡之一对特定 Linux 实例执行步骤：

------
#### [ Amazon Linux/CENTOS/REDHAT ]<a name="amazonlinux"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 配置 Linux 实例以使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果您想手动设置，请参阅 Amazon 知识中心中的[如何将静态 DNS 服务器分配给私有 Amazon EC2 实例，以](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指导。

1. 确保 Linux 实例为最新状态。

   ```
   sudo yum -y update
   ```

1. 在 Linux 实例上安装所需 Samba/Winbind 软件包。

   ```
   sudo yum -y install authconfig samba samba-client samba-winbind samba-winbind-clients
   ```

1. 对主 `smb.conf` 文件进行备份，以便在出现任何故障时可以恢复到该文件：

   ```
   sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
   ```

1. 在文本编辑器中打开原始配置文件 [`/etc/samba/smb.conf`]。

   ```
   sudo vim /etc/samba/smb.conf
   ```

   填写 Active Directory 域环境信息，如下例所示：

   ```
   [global]
    workgroup = example
    security = ads
    realm = example.com
    idmap config * : rangesize = 1000000
    idmap config * : range = 1000000-19999999
    idmap config * : backend = autorid
    winbind enum users = no
    winbind enum groups = no
    template homedir = /home/%U@%D
    template shell = /bin/bash
    winbind use default domain = false
   ```

1. 在文本编辑器中打开主机文件 [`/etc/hosts`]。

   ```
   sudo vim /etc/hosts
   ```

   按如下方式添加 Linux 实例私有 IP 地址：

   ```
   10.x.x.x  Linux_hostname.example.com Linux_hostname
   ```
**注意**  
如果您未在 `/etc/hosts` 文件中指定 IP 地址，则在将实例加入域时可能会收到以下 DNS 错误。  
`No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER`  
此错误表示加入成功，但是 [net ads] 命令无法在 DNS 中注册 DNS 记录。

1. 使用 net 实用程序将 Linux 实例加入 Active Directory。

   ```
   sudo net ads join -U join_account@example.com
   ```  
*join\$1account@example.com*  
*example.com*网域中具有域加入权限的账户。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   Enter join_account@example.com's password:
   Using short domain name -- example
   Joined 'IP-10-x-x-x' to dns domain 'example.com'
   ```

1. 修改 PAM 配置文件，使用以下命令添加 Winbind 身份验证所需的条目：

   ```
   sudo authconfig --enablewinbind --enablewinbindauth  --enablemkhomedir   --update
   ```

1. 通过修改 `/etc/ssh/sshd_config` 文件设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vi /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 重新启动实例之后，使用任何 SSH 客户端连接到它，然后通过执行以下步骤将要为域用户或组授予的根权限添加到 sudoers 列表：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 按如下方式从信任或可信域中添加所需的组或用户，然后将其保存。

      ```
      ## Adding Domain Users/Groups.
      %domainname\\Amazon\ Delegated\ Administrators ALL=(ALL:ALL) ALL
      %domainname\\groupname ALL=(ALL:ALL) ALL
      domainname\\username ALL=(ALL:ALL) ALL
      %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL
      Trusted_DomainName\\username ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------
#### [ SUSE ]<a name="suse"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 配置 Linux 实例以使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果您想手动设置，请参阅 Amazon 知识中心中的[如何将静态 DNS 服务器分配给私有 Amazon EC2 实例，以](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指导。

1. 确保您的 SUSE Linux 15 实例为最新状态。

   1. 连接程序包存储库。

      ```
      sudo SUSEConnect -p PackageHub/15.1/x86_64
      ```

   1. 更新 SUSE。

      ```
      sudo zypper update -y
      ```

1. 在 Linux 实例上安装所需 Samba/Winbind 软件包。

   ```
   sudo zypper in -y samba samba-winbind
   ```

1. 对主 `smb.conf` 文件进行备份，以便在出现任何故障时可以恢复到该文件：

   ```
   sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
   ```

1. 在文本编辑器中打开原始配置文件 [`/etc/samba/smb.conf`]。

   ```
   sudo vim /etc/samba/smb.conf
   ```

   填写 Active Directory 域环境信息，如下例所示：

   ```
   [global]
    workgroup = example
    security = ads
    realm = example.com
    idmap config * : rangesize = 1000000
    idmap config * : range = 1000000-19999999
    idmap config * : backend = autorid
    winbind enum users = no
    winbind enum groups = no
    template homedir = /home/%U@%D
    template shell = /bin/bash
    winbind use default domain = false
   ```

1. 在文本编辑器中打开主机文件 [`/etc/hosts`]。

   ```
   sudo vim /etc/hosts
   ```

   按如下方式添加 Linux 实例私有 IP 地址：

   ```
   10.x.x.x  Linux_hostname.example.com Linux_hostname
   ```
**注意**  
如果您未在 `/etc/hosts` 文件中指定 IP 地址，则在将实例加入域时可能会收到以下 DNS 错误。  
`No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER`  
此错误表示加入成功，但是 [net ads] 命令无法在 DNS 中注册 DNS 记录。

1. 使用以下命令将 Linux 实例加入目录。

   ```
   sudo net ads join -U join_account@example.com
   ```  
*join\$1account*  
具有域加入权限的*example.com*域中的 s AMAccount 名称。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   Enter join_account@example.com's password:
   Using short domain name -- example
   Joined 'IP-10-x-x-x' to dns domain 'example.com'
   ```

1. 修改 PAM 配置文件，使用以下命令添加 Winbind 身份验证所需的条目：

   ```
   sudo pam-config --add --winbind --mkhomedir
   ```

1. 在文本编辑器中打开 Name Service Switch 配置文件 [`/etc/nsswitch.conf`]。

   ```
   vim /etc/nsswitch.conf
   ```

   添加 Winbind 指令，如下所示。

   ```
   passwd: files winbind
   shadow: files winbind
   group:  files winbind
   ```

1. 通过修改 `/etc/ssh/sshd_config` 文件设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vim /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 重新启动实例之后，使用任何 SSH 客户端连接到它，然后通过执行以下步骤将要为域用户或组授予的根权限添加到 sudoers 列表：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 按如下方式从信任或可信域中添加所需的组或用户，然后将其保存。

      ```
      ## Adding Domain Users/Groups.
      %domainname\\Amazon\ Delegated\ Administrators ALL=(ALL:ALL) ALL
      %domainname\\groupname ALL=(ALL:ALL) ALL
      domainname\\username ALL=(ALL:ALL) ALL
      %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL
      Trusted_DomainName\\username ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------
#### [ Ubuntu ]<a name="ubuntu"></a>

1. 使用任何 SSH 客户端连接到实例。

1. 配置 Linux 实例以使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置，或是通过在实例上手动设置，来执行此操作。如果您想手动设置，请参阅 Amazon 知识中心中的[如何将静态 DNS 服务器分配给私有 Amazon EC2 实例，以](https://www.amazonaws.cn/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指导。

1. 确保 Linux 实例为最新状态。

   ```
   sudo apt-get -y upgrade
   ```

1. 在 Linux 实例上安装所需 Samba/Winbind 软件包。

   ```
   sudo apt -y install samba winbind libnss-winbind libpam-winbind
   ```

1. 对主 `smb.conf` 文件进行备份，以便在出现任何故障时可以恢复到该文件：

   ```
   sudo cp /etc/samba/smb.conf /etc/samba/smb.bk
   ```

1. 在文本编辑器中打开原始配置文件 [`/etc/samba/smb.conf`]。

   ```
   sudo vim /etc/samba/smb.conf
   ```

   填写 Active Directory 域环境信息，如下例所示：

   ```
   [global]
    workgroup = example
    security = ads
    realm = example.com
    idmap config * : rangesize = 1000000
    idmap config * : range = 1000000-19999999
    idmap config * : backend = autorid
    winbind enum users = no
    winbind enum groups = no
    template homedir = /home/%U@%D
    template shell = /bin/bash
    winbind use default domain = false
   ```

1. 在文本编辑器中打开主机文件 [`/etc/hosts`]。

   ```
   sudo vim /etc/hosts
   ```

   按如下方式添加 Linux 实例私有 IP 地址：

   ```
   10.x.x.x  Linux_hostname.example.com Linux_hostname
   ```
**注意**  
如果您未在 `/etc/hosts` 文件中指定 IP 地址，则在将实例加入域时可能会收到以下 DNS 错误。  
`No DNS domain configured for linux-instance. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER`  
此错误表示加入成功，但是 [net ads] 命令无法在 DNS 中注册 DNS 记录。

1. 使用 net 实用程序将 Linux 实例加入 Active Directory。

   ```
   sudo net ads join -U join_account@example.com
   ```  
*join\$1account@example.com*  
*example.com*网域中具有域加入权限的账户。在出现提示时输入账户的密码。有关委托这些权限的更多信息，请参阅[为托 Amazon 管 Microsoft AD 委派目录加入权限](directory_join_privileges.md)。  
*example.com*  
目录的完全限定 DNS 名称。

   ```
   Enter join_account@example.com's password:
   Using short domain name -- example
   Joined 'IP-10-x-x-x' to dns domain 'example.com'
   ```

1. 修改 PAM 配置文件，使用以下命令添加 Winbind 身份验证所需的条目：

   ```
   sudo pam-auth-update --add --winbind --enable mkhomedir
   ```

1. 在文本编辑器中打开 Name Service Switch 配置文件 [`/etc/nsswitch.conf`]。

   ```
   vim /etc/nsswitch.conf
   ```

   添加 Winbind 指令，如下所示。

   ```
   passwd: compat winbind
   group:  compat winbind
   shadow: compat winbind
   ```

1. 通过修改 `/etc/ssh/sshd_config` 文件设置 SSH 服务以允许进行密码身份验证。

   1. 在文本编辑器中打开 `/etc/ssh/sshd_config` 文件。

      ```
      sudo vim /etc/ssh/sshd_config
      ```

   1. 将 `PasswordAuthentication` 设置为 `yes`。

      ```
      PasswordAuthentication yes
      ```

   1. 重新启动 SSH 服务。

      ```
      sudo systemctl restart sshd.service
      ```

      或者：

      ```
      sudo service sshd restart
      ```

1. 重新启动实例之后，使用任何 SSH 客户端连接到它，然后通过执行以下步骤将要为域用户或组授予的根权限添加到 sudoers 列表：

   1. 使用以下命令打开 `sudoers` 文件：

      ```
      sudo visudo
      ```

   1. 按如下方式从信任或可信域中添加所需的组或用户，然后将其保存。

      ```
      ## Adding Domain Users/Groups.
      %domainname\\Amazon\ Delegated\ Administrators ALL=(ALL:ALL) ALL
      %domainname\\groupname ALL=(ALL:ALL) ALL
      domainname\\username ALL=(ALL:ALL) ALL
      %Trusted_DomainName\\groupname ALL=(ALL:ALL) ALL
      Trusted_DomainName\\username ALL=(ALL:ALL) ALL
      ```

      （以上示例使用“\$1<space>”形成 Linux 空格字符。）

------

## 连接到 Linux 实例
<a name="linux_winbind_connect"></a>

当用户使用 SSH 客户端连接到实例时，系统会提示他们输入用户名。用户可以采用 `username@example.com` 或 `EXAMPLE\username` 格式输入用户名。响应将类似于以下内容，具体取决于您使用的 Linux 发行版：

**Amazon Linux、Red Hat Enterprise Linux 和 CentOS Linux**

```
login as: johndoe@example.com
johndoe@example.com's password:
Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX
```

**SUSE Linux**

```
SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit)

As "root" (sudo or sudo -i) use the:
  - zypper command for package management
  - yast command for configuration management

Management and Config: https://www.suse.com/suse-in-the-cloud-basics
Documentation: https://www.suse.com/documentation/sles-15/
Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud

Have a lot of fun...
```

**Ubuntu Linux**

```
login as: admin@example.com
admin@example.com@10.24.34.0's password:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 18 22:03:35 UTC 2020

  System load:  0.01              Processes:           102
  Usage of /:   18.6% of 7.69GB   Users logged in:     2
  Memory usage: 16%               IP address for eth0: 10.24.34.1
  Swap usage:   0%
```

# 将亚马逊 EC2 Mac 实例加入您的 Amazon 托管微软 AD 活动目录
<a name="join_mac_instance"></a>

此过程手动将 Amazon EC2 Mac 实例加入您的 Amazon 托管微软 AD 活动目录。

## 先决条件
<a name="mac_instance_join_prerequisites"></a>
+ Amazon EC2 Mac 实例需要 [Amazon EC2 专属主机](https://docs.amazonaws.cn//AWSEC2/latest/UserGuide/dedicated-hosts-overview.html)。您必须分配一台专属主机并在该主机上启动实例。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[启动 Mac 实例](https://docs.amazonaws.cn//AWSEC2/latest/UserGuide/ec2-mac-instances.html#mac-instance-launch)。
+ 我们建议您为 Amazon 托管的 Microsoft AD 活动目录创建 DHCP 选项集。这使 Amazon VPC 中的任何实例都可以指向指定域和 DNS 服务器以解析其域名。请参阅[为 Amazon 托管的 Microsoft AD 创建或更改 DHCP 选项集](dhcp_options_set.md)了解更多信息。

**注意**  
专属主机的定价因您选择的付款选项而异。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[定价和计费](https://docs.amazonaws.cn//AWSEC2/latest/UserGuide/dedicated-hosts-billing.html)。

## 手动加入 Mac 实例
<a name="mac_instance_join_steps"></a>

1. 使用以下 SSH 命令连接到 Mac 实例。有关连接到 Mac 实例的更多信息，请参阅[连接到 Mac 实例](https://docs.amazonaws.cn//AWSEC2/latest/UserGuide/ec2-mac-instances.html#connect-to-mac-instance)。

   ```
   ssh -i /path/key-pair-name.pem ec2-user@my-instance-public-dns-name
   ```

1. 连接到 Mac 实例后，使用以下命令为该*ec2-user*帐户创建密码：

   ```
   sudo passwd ec2-user
   ```

1. 当命令行出现提示时，请提供该*ec2-user*帐户的密码。您可以按照《Amazon EC2 用户指南》**中[更新操作系统和软件](https://docs.amazonaws.cn//AWSEC2/latest/UserGuide/ec2-mac-instances.html#mac-instance-updates)中的步骤更新操作系统和软件。

1. 使用以下*dsconfigad*命令将你的 Mac 实例加入 Amazon 托管的 Microsoft AD Active Directory 域。确保将域名、计算机名称和组织单位替换为你的 Microsoft AD Active Directory Amazon 托管域信息。有关更多信息，请参阅 Apple 网站上的[在 Mac 上的“目录实用工具”中配置域访问](https://support.apple.com/guide/directory-utility/configure-domain-access-diru11f4f748/mac)。
**警告**  
计算机名称不应包含连字符。连字符可能会阻止绑定到托管的 Amazon Microsoft AD Active Directory。

   ```
   sudo dsconfigad -add domainName -computer computerName -username Username -ou "Your-AWS-Delegated-Organizational-Unit"
   ```

   以下示例显示了将名为 **myec2mac01** 的 Mac 实例上的管理用户加入 **example.com** 域时命令的格式：

   ```
   sudo dsconfigad -add example.com -computer myec2mac01 -username admin -ou "OU=Computers,OU=Example,DC=Example,DC=com"
   ```

1. 使用以下命令将 **Amazon 委派管理员**添加到 Mac 实例上的管理用户：

   ```
   sudo dsconfigad -group "EXAMPLE\aws delegated administrators
   ```

1. 使用以下命令确认 Amazon 托管 Microsoft AD Active Directory 域成功加入：

   ```
   dsconfigad -show
   ```

你已成功将你的 Mac 实例加入你的 Amazon 托管微软 AD 活动目录。现在，您可以使用 Amazon 托管的 Microsoft AD Active Directory 凭据登录您的 Mac 实例。

首次登录 Mac 实例时，应为您提供以“其他”用户身份登录的选项。此时，您可以使用您的 Active Directory 域凭证登录 Mac 实例。如果完成这些步骤后，登录屏幕上未提供“其他”选项，请以 ec2-user 身份登录，然后注销。

要使用图形用户界面以域用户身份登录，请按照《Amazon EC2 用户指南》**中的[连接到实例的图形用户界面（GUI）](https://docs.amazonaws.cn//AWSEC2/latest/UserGuide/ec2-mac-instances.html#mac-instance-vnc)中的步骤进行操作。

# 为托 Amazon 管 Microsoft AD 委派目录加入权限
<a name="directory_join_privileges"></a>

要将计算机加入您的 Amazon 托管 Microsoft AD，您需要一个有权将计算机加入该目录的帐户。

使用 Microsoft Amazon Active Directory 的 Directory **Service，管理员**和**Amazon 委派服务器管理员**组的成员拥有这些权限。

但是根据最佳实践，应使用只拥有所需的最小权限的账户。以下过程演示如何创建名为 `Joiners` 的新组，并向此组委派将计算机加入到目录所需的权限。

您必须在已加入到目录且已安装 **Active Directory 用户和计算机** MMC 管理单元的计算机上执行此过程。您还必须以域管理员身份登录。

**为托 Amazon 管 Microsoft AD 委派加入权限**

1. 打开 **Active Directory User and Computers**，在导航树中选择具有您的 NetBIOS 名称的组织单位 (OU)，然后选择 **Users** OU。
**重要**  
当你启动 Microsoft Active Directory 的 Amazon 目录服务时， Amazon 会创建一个包含所有目录对象的组织单位 (OU)。此 OU (具有您在创建目录时键入的 NetBIOS 名称) 位于域根目录中。域根由所有和管理 Amazon。无法对域根本身进行更改，因此必须在具有您的 NetBIOS 名称的 OU 中创建 **Joiners** 组。

1. 打开 **Users** 的上下文 (右键单击) 菜单，然后依次选择 **New** 和 **Group**。

1. 在 **New Object - Group** 框中，键入以下内容，然后选择 **OK**。
   + 对于 **Group name (组名称)**，键入 **Joiners**。
   + 对于 **Group scope**，选择 **Global**。
   + 对于 **Group type**，选择 **Security**。

1. 在导航树中，选择您的 NetBIOS 名称下的 **Computers** 容器。从 **Action** 菜单中选择 **Delegate Control**。

1. 在 **Delegation of Control Wizard** 页面上，选择 **Next**，然后选择 **Add**。

1. 在 **Select Users, Computers, or Groups** 框中，键入 `Joiners`，然后选择 **OK**。如果找到多个对象，请选择上面创建的 `Joiners` 组。选择**下一步**。

1. 在 **Tasks to Delegate** 页面上，选择 **Create a custom task to delegate**，然后选择 **Next**。

1. 选择 **Only the following objects in the folder**，然后选择 **Computer objects**。

1. 选择 **Create selected objects in this folder**，然后选择 **Delete selected objects in this folder**。然后选择**下一步**。  
![\[对象类型\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/aduc_directory_join_linux.png)

1. 选择 **Read** 和 **Write**，然后选择 **Next**。  
![\[对象类型\]](http://docs.amazonaws.cn/directoryservice/latest/admin-guide/images/aduc_directory_join_permissions.png)

1. 在 **Completing the Delegation of Control Wizard** 页面上验证信息，然后选择 **Finish**。

1. 使用强密码创建一个用户，并将该用户添加到 `Joiners` 组。此用户必须位于您的 NetBIOS 名称下的 **Users** 容器中。该用户随后拥有足够的权限将实例连接到目录。

# 为 Amazon 托管的 Microsoft AD 创建或更改 DHCP 选项集
<a name="dhcp_options_set"></a>

Amazon 建议您为 Amazon Directory Service 目录创建 DHCP 选项集，并将 DHCP 选项集分配给您的目录所在的 VPC。这使该 VPC 中的任何实例都可以指向指定域和 DNS 服务器以解析其域名。

 有关 DHCP 选项集的更多信息，请参阅[https://docs.amazonaws.cn/vpc/latest/userguide/VPC_DHCP_Options.html](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_DHCP_Options.html)《Amazon VPC 用户指南》中的 *DHCP 选项集*。

**为目录创建 DHCP 选项集**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择 **DHCP Options Sets**，然后选择 **Create DHCP options set**。

1. 在**创建 DHCP 选项集**页面上，输入目录的以下值：  
**名称**  
选项集的可选标签。  
**域名**  
目录的完全限定名称，例如 `corp.example.com`。  
**域名服务器**  
您 Amazon提供的目录的 DNS 服务器的 IP 地址。  
可以转到 [Amazon Directory Service 控制台](https://console.amazonaws.cn/directoryservicev2/)导航窗格，选择**目录**，然后选择正确的目录 ID，从而找到这些地址。  
**NTP 服务器**  
将此字段留空。  
**NetBIOS 名称服务器**  
将此字段留空。  
**NetBIOS 节点类型**  
将此字段留空。

1. 选择**创建 DHCP 选项集**。新的 DHCP 选项集会出现在您的 DHCP 选项列表中。

1. 记下新的 DHCP 选项集的 ID (dopt-*xxxxxxxx*)。使用它将新选项集与 VPC 相关联。

**更改与 VPC 相关联的 DHCP 选项集。**

在您创建 DHCP 选项集之后，您便无法再修改这些选项。如果您希望 VPC 使用不同的 DHCP 选项集，您必须创建新的选项集，并将其与您的 VPC 相关联。您还可以设置 VPC，让其不使用任何 DHCP 选项。

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择**您的 VPCs**。

1. 选择 VPC，然后依次选择**操作**、**编辑 VPC 设置**。

1. 对于 **DHCP 选项集**，选择一个选项集或选择**无 DHCP 选项集**，然后选择**保存**。

要使用命令行更改与 VPC 相关联的 DHCP 选项集，请参阅以下内容：
+ **Amazon CLI**: [associate-dhcp-options](https://docs.amazonaws.cn/cli/latest/reference/ec2/associate-dhcp-options.html)
+  **Amazon Tools for Windows PowerShell**: [Register-EC2DhcpOption](https://docs.amazonaws.cn/powershell/latest/reference/items/Register-EC2DhcpOption.html)