

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 Amazon EC2 Linux 執行個體加入您的 AWS Managed Microsoft AD Active Directory
<a name="joining_linux_instance"></a>

您可以在 中啟動 EC2 Linux 執行個體並將其加入 AWS Managed Microsoft AD AWS 管理主控台。您也可以手動將 EC2 Linux 執行個體加入 AWS Managed Microsoft AD。您也可以使用 Winbind 等工具，讓網域將 EC2 Linux 執行個體加入 AWS Managed Microsoft 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 Enterprise Server 15 SP1

**注意**  
Ubuntu 14 和 Red Hat Enterprise Linux 7 和 8 之前的分佈不支援無縫網域聯結功能。

**Topics**
+ [將 Amazon EC2 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory](seamlessly_join_linux_instance.md)
+ [將 Amazon EC2 Linux 執行個體無縫加入共用的 AWS Managed Microsoft AD](seamlessly_join_linux_to_shared_MAD.md)
+ [手動將 Amazon EC2 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory](join_linux_instance.md)
+ [使用 Winbind 手動將 Amazon EC2 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory](join_linux_instance_winbind.md)

# 將 Amazon EC2 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory
<a name="seamlessly_join_linux_instance"></a>

此程序會將 Amazon EC2 Linux 執行個體無縫加入您的 AWS Managed Microsoft AD Active Directory。若要完成此程序，您需要建立可能會產生額外費用的 AWS Secrets Manager 秘密。如需詳細資訊，請參閱[AWS Secrets Manager 定價](https://aws.amazon.com/secrets-manager/pricing/)。

如果您需要跨多個 AWS 帳戶執行無縫網域聯結，您可以選擇啟用[目錄共用](https://docs.aws.amazon.com/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 Enterprise Server 15 SP1

**注意**  
Ubuntu 14 和 Red Hat Enterprise Linux 7 和 8 之前的分佈不支援無縫網域聯結功能。

如需將 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory 的程序示範，請參閱下列 YouTube 影片。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/NNUtdVVZVxU?si=_0zOiXhUObcW0_Wo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/NNUtdVVZVxU?si=_0zOiXhUObcW0_Wo)


## 先決條件
<a name="seamless-linux-prereqs"></a>

您必須先完成這些區段中的程序，才能設定 EC2 Linux 執行個體的無縫網域聯結。

### 無縫網域聯結的網路先決條件
<a name="linux-domain-join-networking-prereqs"></a>

若要無縫加入 EC2 Linux 執行個體的網域，您將需要完成下列操作：
+ 您需要下列 IAM 許可才能無縫加入 EC2 Linux 執行個體：
  + 擁有 AWS Managed Microsoft AD。如需詳細資訊，請參閱 [建立 AWS Managed Microsoft AD](ms_ad_getting_started.md#ms_ad_getting_started_create_directory)。
  + 您需要下列 IAM 許可才能無縫加入 EC2 Windows執行個體：
    + 具有下列 IAM 許可的 IAM 執行個體設定檔：
      + `AmazonSSMManagedInstanceCore`
      + `AmazonSSMDirectoryServiceAccess`
    + 將 EC2 加入 AWS Managed Microsoft AD 的使用者無縫網域需要下列 IAM 許可：
      + 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"`
      + AWS Systems Manager 許可：
        + `"ssm:DescribeInstanceInformation"`
        + `"ssm:SendCommand"`
        + `"ssm:GetCommandInvocation"`
        + `"ssm:CreateBatchAssociation"`
+ 建立 AWS Managed Microsoft AD 時，會使用傳入和傳出規則建立安全群組。若要進一步了解這些規則和連接埠，請參閱 [使用 AWS Managed Microsoft AD 建立的內容](ms_ad_getting_started_what_gets_created.md)。若要無縫加入 EC2 Linux 執行個體的網域，您要啟動執行個體的 VPC 應允許 AWS Managed Microsoft AD 安全群組傳入和傳出規則中允許的相同連接埠。
  + 根據您的網路安全和防火牆設定，您可能需要允許額外的傳出流量。此流量適用於 HTTPS （連接埠 443) 到下列端點：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/seamlessly_join_linux_instance.html)
+ 我們建議您使用 DNS 伺服器來解析 AWS Managed Microsoft AD 網域名稱。若要這樣做，您可以建立 DHCP 選項集。如需詳細資訊，請參閱[建立或變更 AWS Managed Microsoft AD 的 DHCP 選項集](dhcp_options_set.md)。
  + 如果您選擇不建立 DHCP 選項集，則您的 DNS 伺服器將是靜態的，並由 AWS Managed Microsoft AD 設定為 。

### 選取無縫域加入服務帳戶
<a name="seamless-linux-prereqs-select"></a>

您可以將 Linux 電腦無縫加入 AWS Managed Microsoft AD Active Directory 網域。為此，您必須使用一個具有建立電腦帳戶許可的使用者帳戶，才能將機器加入域。儘管 *AWS 委派管理員*或其他群組的成員可能有足夠的權限將電腦加入域，但我們不建議這樣做。我們建議您使用具有將電腦加入域所需的最低權限的服務帳戶，這才是最佳做法。

若要委派具有所需最低權限的帳戶將電腦加入域，您可以執行下列 PowerShell 命令。您必須從已加入域並安裝了 [安裝 AWS Managed Microsoft AD 的 Active Directory 管理工具](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>

您可以使用 AWS Secrets Manager 來存放網域服務帳戶。如需詳細資訊，請參閱[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html)。

**注意**  
Secrets Manager 需支付相關費用。如需詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的 [定價](https://docs.aws.amazon.com//secretsmanager/latest/userguide/intro.html#asm_pricing)。

**建立機密並儲存域服務帳戶資訊**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 的 AWS Secrets Manager 主控台。

1. 選擇 **Store a new secret** (存放新機密)。

1. 在 **Store a new secret** (儲存新機密) 頁面中，執行下列動作：

   1. 在**秘密類型**下，選擇**其他類型的秘密**。

   1. 在**鍵/值對**下，執行下列動作：

      1. 在第一個方塊中，輸入 **awsSeamlessDomainUsername**。在相同資料列的下一個方塊中，輸入服務帳戶的使用者名稱。例如，如果您之前使用的是 PowerShell 命令，則服務帳戶名稱將為 **awsSeamlessDomain**。
**注意**  
您必須輸入完全正確的 **awsSeamlessDomainUsername**。確認頭尾沒有任何空格。否則域加入將會失敗。  
![\[在 AWS Secrets Manager 主控台的 中，選擇秘密類型頁面。其他類型的秘密是在秘密類型下選取awsSeamlessDomainUsername，並輸入 做為索引鍵值。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/secrets_manager_1.png)

      1. 選擇**新增列**。

      1. 在新的一列的第一個方塊中，輸入 **awsSeamlessDomainPassword**。在同一列的下一個方塊中，輸入服務帳戶的密碼。
**注意**  
您必須輸入完全正確的 **awsSeamlessDomainPassword**。確認頭尾沒有任何空格。否則域加入將會失敗。

      1. 在**加密金鑰下，**保留預設值 `aws/secretsmanager`。 選擇此選項時， AWS 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。確認頭尾沒有任何空格。否則域加入將會失敗。  
![\[在 AWS Secrets Manager 主控台的設定秘密頁面上。已輸入秘密名稱並反白顯示。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/secrets_manager_2.png)

1. 將其他所有設定保留為預設值，然後選擇**下一步**。

1. 針對**設定自動輪換**，選擇**停用自動輪換**，然後選擇**下一步**。

   您可以在存放後開啟此秘密的輪換。

1. 檢查設定，然後選擇**儲存**以儲存變更。Secrets Manager 主控台會傳回帳戶中的秘密清單，清單中包含現在的新秘密。

1. 從清單中選擇您新建立的機密名稱，並記下 **Secret ARN** 值。您會在下一節中用到它。

### 開啟網域服務帳戶秘密的輪換
<a name="seamless-linux-prereqs-turn-on-rotation"></a>

我們建議您定期輪換秘密，以改善您的安全狀態。

**開啟網域服務帳戶秘密的輪換**
+ 遵循*AWS Secrets Manager 《 使用者指南*》中[設定 AWS Secrets Manager 秘密的自動輪換](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_turn-on-for-other.html)中的指示。

  對於步驟 5，請使用*AWS Secrets Manager 《 使用者指南*》中的輪換範本 [Microsoft Active Directory 登入](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_available-rotation-templates.html#template-AD-password)資料。

  如需協助，請參閱*AWS Secrets Manager 《 使用者指南*》中的[疑難排解 AWS Secrets Manager 輪換](https://docs.aws.amazon.com/secretsmanager/latest/userguide/troubleshoot_rotation.html)。

### 建立必要的 IAM 政策和角色
<a name="seamless-linux-prereqs-create-policy"></a>

透過下列步驟建立自訂政策，以允許對 Secrets Manager 無縫域加入機密 (您先前建立的) 進行唯讀存取，以及建立新的 LinuxEC2DomainJoin IAM 角色。

#### 建立 Secrets Manager IAM 讀取政策
<a name="seamless-linux-prereqs-create-policy-step1"></a>

您需要使用 IAM 主控台建立一個政策，授予對 Secrets Manager 機密的唯讀存取權。

**建立 Secrets Manager IAM 讀取政策**

1. 以具有建立 IAM 政策許可的使用者 AWS 管理主控台 身分登入 。前往網址 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 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. 完成時，選擇 **Next (下一步)**。政策驗證程式會回報任何語法錯誤。如需詳細資訊，請參閱[驗證 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html)。

1. 在**檢閱政策**頁面上，輸入政策的名稱，例如 **SM-Secret-Linux-DJ-*d-xxxxxxxxxx*-Read**。檢閱**摘要**區段來查看您的政策所授予的許可。然後選擇**建立政策**來儲存變更。新的政策會出現在受管政策清單中，並且已準備好連接至身分。

**注意**  
我們建議您為每個機密建立一個政策。這樣做可以確保執行個體只能存取適當的機密，並在執行個體受到入侵時將影響降至最低。

#### 建立 LinuxEC2DomainJoin 角色
<a name="seamless-linux-prereqs-create-policy-step2"></a>

您可以使用 IAM 主控台建立將用於域加入 Linux EC2 執行個體的角色。

**建立 LinuxEC2DomainJoin 角色**

1. 以具有建立 IAM 政策許可的使用者 AWS 管理主控台 身分登入 。前往網址 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格的**存取管理**下，選擇**角色**。

1. 在內容窗格中，選擇**建立角色**。

1. 在 **Select type of trusted entity** (選擇可信任執行個體類型) 下，選擇 **AWS service** ( 服務)。

1. 在**使用案例中**，選擇 **EC2**，然後選擇**下一步**。  
![\[在 IAM 主控台中，選取信任的實體 page. AWS service 和 EC2。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/iam-console-trusted-entity.png)

1. 對於**篩選政策**，請執行下列操作：

   1. 輸入 **AmazonSSMManagedInstanceCore**。然後選取清單中相應項目的核取方塊。

   1. 輸入 **AmazonSSMDirectoryServiceAccess**。然後選取清單中相應項目的核取方塊。

   1. 輸入 **SM-Secret-Linux-DJ-*d-xxxxxxxxxx*-Read** 或您在上一個程序中建立的 IAM 政策名稱。然後選取清單中相應項目的核取方塊。

   1. 新增上述三個政策後，選取**建立角色**。
**注意**  
AmazonSSMDirectoryServiceAccess 提供將執行個體加入由 Directory Service管理的 Active Directory 的許可。AmazonSSMManagedInstanceCore 提供使用 AWS Systems Manager 服務所需的最低許可。有關建立具有這些許可的角色的更多資訊，以及有關可以指派給 IAM 角色的其他許可和政策的資訊，請參閱《AWS Systems Manager 使用者指南》**中的[為 Systems Manager 建立 IAM 執行個體設定檔](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)一節。

1. 在角色名稱欄位中輸入新角色的名稱，例如 **LinuxEC2DomainJoin**或您偏好的另一個**名稱**。

1. (選用) 針對 **Role description (角色描述)**，輸入描述。

1. （選用） 選擇**步驟 3：新增標籤**以新增標籤下的**新增**標籤。標籤鍵值對用於組織、追蹤或控制此角色的存取。

1. 選擇建**立角色**。

## 無縫加入您的 Linux 執行個體
<a name="seamless-linux-join-instance"></a>

**無縫加入您的 Linux 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 從導覽列中的區域選擇器中，選擇 AWS 區域 與現有目錄相同的 。

1. 在 **EC2 儀表板**的**啟動執行個體**區段中，選擇**啟動執行個體**。

1. 在**啟動執行個體**頁面**的名稱和標籤**區段下，輸入您要用於 Linux EC2 執行個體的名稱。

1.  *（選用）* 選擇**新增其他標籤**以新增一或多個標籤鍵值對，以組織、追蹤或控制此 EC2 執行個體的存取。

1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 區段中，選擇您要啟動的 Linux AMI。
**注意**  
使用的 AMI 必須具有 AWS Systems Manager (SSM Agent) 2.3.1644.0 版或更新版本。若要透過從 AMI 啟動執行個體來檢查 AMI 中已安裝的 SSM 代理程式版本，請參閱[取得目前安裝的 SSM 代理程式版本](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-get-version.html)。如需升級 SSM 代理程式，請參閱[在適用於 Linux 的 EC2 執行個體上安裝和設定 SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。  
SSM 在將 Linux 執行個體加入 Active Directory 網域時使用 `aws:domainJoin` 外掛程式。外掛程式會將 Linux 執行個體的主機名稱變更為 EC2AMAZ-*XXXXXXX* 格式。如需 的詳細資訊`aws:domainJoin`，請參閱*AWS Systems Manager 《 使用者指南*》中的[AWS Systems Manager 命令文件外掛程式參考](https://docs.aws.amazon.com//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)。

1. 在**執行個體類型**區段中，從**執行個體類型**下拉式清單中選擇您要使用的執行個體類型。

1. 在**金鑰對 (登入)** 區段中，您可以選擇建立新金鑰對或從現有金鑰對中進行選擇。若要建立新的金鑰對，請選擇**建立新金鑰對**。輸入金鑰對的名稱，然後選取**金鑰對類型**和**私有金鑰檔案格式**的選項。若要將私有金鑰儲存為可與 OpenSSH 搭配使用的格式，請選擇 **.pem**。若要將私有金鑰儲存為可與 PuTTY 搭配使用的格式，請選擇 **.ppk**。選擇**建立金鑰對**。您的瀏覽器會自動下載私有金鑰檔案。將私有金鑰檔案存放在安全的地方。
**重要**  
這是您儲存私有金鑰檔案的唯一機會。

1. 在**啟動執行個體**頁面上的**網路設定**區段下，選擇**編輯**。從 **VPC – *required*** 下拉式清單中選擇在其中建立目錄的 **VPC**。

1. 從**子網路**下拉式清單中選擇 VPC 中的公有子網路之一。您所選取的子網路必須將所有外部流量路由到網際網路閘道。如果沒有，則將無法從遠端連線到執行個體。

   如需有關連線至網際網路閘道的詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[使用網際網路閘道連線至網際網路](https://docs.aws.amazon.com//vpc/latest/userguide/VPC_Internet_Gateway.html)一節。

1. 在**自動指派公有 IP** 下，選擇**啟用**。

   如需公有和私有 IP 定址的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 執行個體 IP 定址](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。 *Amazon EC2 *

1. 對於**防火牆 (安全群組)**設定，您可以使用預設設定或根據需要進行變更。

1. 對於**設定儲存**設定，您可以使用預設設定或根據需要進行變更。

1. 選取**進階詳細資訊**區段，從**域加入目錄**下拉式清單中選取域。
**注意**  
選擇網域加入目錄後，您可能會看到：  

![\[選取網域聯結目錄時的錯誤訊息。您現有的 SSM 文件發生錯誤。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

如果 EC2 啟動精靈識別具有非預期屬性的現有 SSM 文件，就會發生此錯誤。您可以執行下列任一作業：  
如果您先前已編輯 SSM 文件，且預期屬性，請選擇關閉並繼續啟動 EC2 執行個體，而不進行任何變更。
選取此處的刪除現有 SSM 文件連結，以刪除 SSM 文件。這將允許建立具有正確屬性的 SSM 文件。當您啟動 EC2 執行個體時，系統會自動建立 SSM 文件。

1. 針對 **IAM 執行個體描述檔**，選擇您先前在先決條件區段**步驟 2：建立 LinuxEC2DomainJoin 角色中建立的 IAM 角色**。

1. 選擇**啟動執行個體**。

**注意**  
如果您使用 SUSE Linux 執行無縫域加入，則需要重新啟動才能進行身分驗證。若要從 Linux 終端重新啟動 SUSE，請鍵入 **sudo reboot**。

# 將 Amazon EC2 Linux 執行個體無縫加入共用的 AWS Managed Microsoft AD
<a name="seamlessly_join_linux_to_shared_MAD"></a>

在此程序中，您將順暢地將 Amazon EC2 Linux 執行個體加入共用的 AWS Managed Microsoft AD。若要這樣做，您將在想要啟動 EC2 Linux AWS Secrets Manager 執行個體的帳戶中的 EC2 執行個體角色中建立 IAM 讀取政策。這將在此程序`Account 2`中稱為 。此執行個體將使用從另一個帳戶共用的 AWS Managed Microsoft AD，稱為 `Account 1`。

## 先決條件
<a name="seamlessly_join_linux_to_shared_MAD_prereqs"></a>

您必須先完成下列動作，才能將 Amazon EC2 Linux 執行個體無縫加入共用的 AWS Managed Microsoft AD：
+ 教學課程中的步驟 1 到 3。 [教學課程：共用 AWS Managed Microsoft AD 目錄以實現無縫 EC2 網域加入](ms_ad_tutorial_directory_sharing.md)本教學課程會逐步引導您設定網路和共用 AWS Managed Microsoft AD。
+ 中所述的程序[將 Amazon EC2 Linux 執行個體無縫加入 AWS Managed Microsoft AD Active Directory](seamlessly_join_linux_instance.md)。

## 步驟 1. 在帳戶 2 中建立 LinuxEC2DomainJoin 角色
<a name="seamlessly_join_linux_to_shared_MAD_step_1"></a>

在此步驟中，您將使用 IAM 主控台來建立 IAM 角色，用於在登入 時加入 EC2 Linux 執行個體的網域`Account 2`。

**建立 LinuxEC2DomainJoin 角色**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在左側導覽窗格的**存取管理**下，選擇**角色**。

1. 在 **Roles** (角色) 頁面上，選擇 **Create role** (建立角色)。

1. 在 **Select type of trusted entity** (選擇可信任執行個體類型) 下，選擇 **AWS service** ( 服務)。

1. 在**使用案例中**，選擇 **EC2**，然後選擇**下一步**

1. 對於**篩選政策**，請執行下列操作：

   1. 輸入 `AmazonSSMManagedInstanceCore`。然後選取清單中該項目的核取方塊。

   1. 輸入 `AmazonSSMDirectoryServiceAccess`。然後選取清單中該項目的核取方塊。

   1. 新增這些政策之後，請選取**建立角色**。
**注意**  
`AmazonSSMDirectoryServiceAccess` 提供將執行個體加入由 管理之 Active Directory 的許可 Directory Service。 `AmazonSSMManagedInstanceCore`提供使用 所需的最低許可 AWS Systems Manager。如需使用這些許可建立角色的詳細資訊，以及您可以指派給 IAM 角色的其他許可和政策的相關資訊，請參閱*AWS Systems Manager 《 使用者指南*》中的[設定 Systems Manager 所需的執行個體許可](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-permissions.html)。

1. 在角色名稱欄位中輸入新角色的名稱，例如 `LinuxEC2DomainJoin`或您偏好的另一個**名稱**。

1. *（選用）* 針對**角色描述**，輸入描述。

1. *（選用）* 在**步驟 3：新增****標籤以新增標籤**下選擇新增標籤。標籤鍵值對用於組織、追蹤或控制此角色的存取。

1. 選擇建**立角色**。

## 步驟 2. 建立跨帳戶資源存取權以共用 AWS Secrets Manager 秘密
<a name="seamlessly_join_linux_to_shared_MAD_step_2"></a>

下一節是無縫加入 EC2 Linux 執行個體與共用 AWS Managed Microsoft AD 所需的其他需求。這些要求包括建立資源政策，並將其連接到適當的 服務和資源。

若要允許帳戶中的使用者存取另一個帳戶中的 AWS Secrets Manager 秘密，您必須在資源政策和身分政策中允許存取。這種類型的存取稱為[跨帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

這種存取類型不同於將存取權授予與 Secrets Manager 秘密相同帳戶中的身分。您還必須允許身分使用秘密加密所用的 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)(KMS) 金鑰。此許可是必要的，因為您無法使用 AWS 受管金鑰 (`aws/secretsmanager`) 進行跨帳戶存取。反之，您會使用您建立的 KMS 金鑰來加密秘密，然後將金鑰政策連接至秘密。若要變更秘密的加密金鑰，請參閱[修改 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html)。

**注意**  
根據您使用的秘密 AWS Secrets Manager，會產生相關費用。如需目前完整定價清單，請參閱 [AWS Secrets Manager 定價](https://aws.amazon.com/secrets-manager/pricing/)。您可以使用 Secrets Manager 建立 AWS 受管金鑰 `aws/secretsmanager`的 免費秘密加密。如果您建立自己的 KMS 金鑰來加密秘密， 會以目前的 AWS KMS 費率向您 AWS 收費。如需詳細資訊，請參閱[AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。

下列步驟可讓您建立資源政策，讓使用者將 EC2 Linux 執行個體無縫加入共用的 AWS Managed Microsoft AD。

**將資源政策連接至帳戶 1 中的秘密**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 從秘密清單中，選擇您在 期間建立的**秘密**[先決條件](#seamlessly_join_linux_to_shared_MAD_prereqs)。

1. 在**秘密的詳細資訊頁面**的**概觀**索引標籤下，向下捲動至**資源許可**。

1. 選取**編輯許可**。

   1. 在政策欄位中，輸入下列政策。下列政策允許 中的 **LinuxEC2DomainJoin** `Account 2`存取 中的秘密`Account 1`。將 ARN 值取代為您在[步驟 1](#seamlessly_join_linux_to_shared_MAD_step_1) 中建立的 `Account 2``LinuxEC2DomainJoin`角色的 ARN 值。若要使用此政策，請參閱[將許可政策連接至 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/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": "*"
         }
       ]
     }
     ```

------

**將陳述式新增至帳戶 1 中 KMS 金鑰的金鑰政策**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 在左側導覽窗格中，選取**客戶受管金鑰**。

1. 在**客戶受管金鑰**頁面上，選取您建立的金鑰。

1. 在**金鑰詳細資訊**頁面上，導覽至**金鑰政策**，然後選取**編輯**。

1. 下列金鑰政策陳述式允許 `ApplicationRole`中的 `Account 2`使用 中的 KMS 金鑰`Account 1`來解密 中的秘密`Account 1`。若要使用此陳述式，請將其新增至 KMS 金鑰的金鑰政策。如需詳細資訊，請參閱[變更金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

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

**為帳戶 2 中的身分建立身分政策**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在左側導覽窗格的**存取管理**下，選取**政策**。

1. 選取 **Create Policy (建立政策)**。在**政策編輯器**中選擇 **JSON**。

1. 下列政策允許 `ApplicationRole`中的 `Account 2`存取秘密，`Account 1`並使用 中的加密金鑰解密秘密值`Account 1`。您可以在 Secret ARN 下**秘密詳細資訊**頁面的 Secrets Manager 主控台中找到**秘密的 ARN**。或者，您可以呼叫 [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) 來識別秘密的 ARN。將資源 ARN 取代為秘密 ARN 和 的資源 ARN`Account 1`。若要使用此政策，請參閱[將許可政策連接至 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/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. 尋找並選取您在 `Account 2`中建立的角色[Attach a resource policy to the secret in Account 1](#step1ResourcePolicy)。

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 執行個體無縫加入共用的 AWS Managed Microsoft AD。

**無縫加入您的 Linux 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 從導覽列中的區域選擇器中，選擇 AWS 區域 與現有目錄相同的 。

1. 在 **EC2 儀表板**的**啟動執行個體**區段中，選擇**啟動執行個體**。

1. 在**啟動執行個體**頁面**的名稱和標籤**區段下，輸入您要用於 Linux EC2 執行個體的名稱。

1.  *（選用）* 選擇**新增其他標籤**以新增一或多個標籤鍵值對，以組織、追蹤或控制此 EC2 執行個體的存取。

1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 區段中，選擇您要啟動的 Linux AMI。
**注意**  
使用的 AMI 必須具有 AWS Systems Manager (SSM Agent) 2.3.1644.0 版或更新版本。若要透過從 AMI 啟動執行個體來檢查 AMI 中已安裝的 SSM 代理程式版本，請參閱[取得目前安裝的 SSM 代理程式版本](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-get-version.html)。如需升級 SSM 代理程式，請參閱[在適用於 Linux 的 EC2 執行個體上安裝和設定 SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)。  
SSM 在將 Linux 執行個體加入 Active Directory 網域時使用 `aws:domainJoin` 外掛程式。外掛程式會將 Linux 執行個體的主機名稱變更為 EC2AMAZ-*XXXXXXX* 格式。如需 的詳細資訊`aws:domainJoin`，請參閱*AWS Systems Manager 《 使用者指南*》中的[AWS Systems Manager 命令文件外掛程式參考](https://docs.aws.amazon.com//systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html#aws-domainJoin)。

1. 在**執行個體類型**區段中，從**執行個體類型**下拉式清單中選擇您要使用的執行個體類型。

1. 在**金鑰對 (登入)** 區段中，您可以選擇建立新金鑰對或從現有金鑰對中進行選擇。若要建立新的金鑰對，請選擇**建立新金鑰對**。輸入金鑰對的名稱，然後選取**金鑰對類型**和**私有金鑰檔案格式**的選項。若要將私有金鑰儲存為可與 OpenSSH 搭配使用的格式，請選擇 **.pem**。若要將私有金鑰儲存為可與 PuTTY 搭配使用的格式，請選擇 **.ppk**。選擇**建立金鑰對**。您的瀏覽器會自動下載私有金鑰檔案。將私有金鑰檔案存放在安全的地方。
**重要**  
這是您儲存私有金鑰檔案的唯一機會。

1. 在**啟動執行個體**頁面上的**網路設定**區段下，選擇**編輯**。從 **VPC – *required*** 下拉式清單中選擇在其中建立目錄的 **VPC**。

1. 從**子網路**下拉式清單中選擇 VPC 中的公有子網路之一。您所選取的子網路必須將所有外部流量路由到網際網路閘道。如果沒有，則將無法從遠端連線到執行個體。

   如需有關連線至網際網路閘道的詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[使用網際網路閘道連線至網際網路](https://docs.aws.amazon.com//vpc/latest/userguide/VPC_Internet_Gateway.html)一節。

1. 在**自動指派公有 IP** 下，選擇**啟用**。

   如需公有和私有 IP 定址的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 執行個體 IP 定址](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-instance-addressing.html)。 *Amazon EC2 *

1. 對於**防火牆 (安全群組)**設定，您可以使用預設設定或根據需要進行變更。

1. 對於**設定儲存**設定，您可以使用預設設定或根據需要進行變更。

1. 選取**進階詳細資訊**區段，從**域加入目錄**下拉式清單中選取域。
**注意**  
選擇網域加入目錄後，您可能會看到：  

![\[選取網域聯結目錄時的錯誤訊息。您現有的 SSM 文件發生錯誤。\]](http://docs.aws.amazon.com/zh_tw/directoryservice/latest/admin-guide/images/SSM-Error-Message.png)

如果 EC2 啟動精靈識別具有非預期屬性的現有 SSM 文件，就會發生此錯誤。您可以執行下列任一作業：  
如果您先前已編輯 SSM 文件，且預期屬性，請選擇關閉並繼續啟動 EC2 執行個體，而不進行任何變更。
選取此處的刪除現有 SSM 文件連結，以刪除 SSM 文件。這將允許建立具有正確屬性的 SSM 文件。當您啟動 EC2 執行個體時，系統會自動建立 SSM 文件。

1. 針對 **IAM 執行個體描述檔**，選擇您先前在先決條件區段 **步驟 2：建立 LinuxEC2DomainJoin 角色中建立的 IAM 角色**。

1. 選擇**啟動執行個體**。

**注意**  
如果您使用 SUSE Linux 執行無縫域加入，則需要重新啟動才能進行身分驗證。若要從 Linux 終端重新啟動 SUSE，請鍵入 **sudo reboot**。

# 手動將 Amazon EC2 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory
<a name="join_linux_instance"></a>

除了 Amazon EC2 Windows執行個體之外，您也可以將特定 Amazon EC2 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory。系統支援下列 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 Enterprise Server 15 SP1

**注意**  
其他 Linux 分佈和版本也許能正常運作，但尚未經過測試。

## 將 Linux 執行個體加入您的 AWS Managed Microsoft AD
<a name="join_linux_prereq"></a>

在將 Amazon Linux、CentOS、Red Hat 或 Ubuntu 執行個體加入目錄之前，必須先依照 [無縫加入您的 Linux 執行個體](seamlessly_join_linux_instance.md#seamless-linux-join-instance) 中的指定啟動執行個體。

**重要**  
以下某些程序若未正確執行，可能會導致您的執行個體無法連線或無法使用。因此，我們強烈建議您在執行這些程序之前，對您的執行個體進行備份或擷取快照。

**將 Linux 執行個體加入您的目錄**  
使用以下其中一個標籤，依照您的特定 Linux 執行個體的步驟：

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

1. 使用任何 SSH 用戶端連線到執行個體。

1. 設定 Linux 執行個體以使用 Directory Service所提供 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動進行設定，請參閱 AWS 知識中心的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)，了解為特定 Linux 分佈和版本設定持久性 DNS 伺服器的方式。

1. 請確定您的 Amazon Linux - 64 位元執行個體處於最新狀態。

   ```
   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.aws.amazon.com/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* 域中具備域加入權限的帳戶。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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 用戶端連線到執行個體，並執行下列步驟，將 AWS 委派管理員群組新增至 sudoers 清單：

   1. 使用下列命令開啟 `sudoers` 檔案：

      ```
      sudo visudo
      ```

   1. 在 `sudoers` 檔案的底部加入下列程式碼，然後儲存檔案。

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

      (上述範例使用 "\$1<space>" 來建立 Linux 空白字元。)

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

1. 使用任何 SSH 用戶端連線到執行個體。

1. 設定 Linux 執行個體以使用 Directory Service所提供 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動進行設定，請參閱 AWS 知識中心的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-static-dns-ubuntu-debian/)，了解為特定 Linux 分佈和版本設定持久性 DNS 伺服器的方式。

1. 請確定您的 CentOS 7 執行個體處於最新狀態。

   ```
   sudo yum -y update
   ```

1. 在您的 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* 域中具備域加入權限的帳戶。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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 用戶端連線到執行個體，並執行下列步驟，將 AWS 委派管理員群組新增至 sudoers 清單：

   1. 使用下列命令開啟 `sudoers` 檔案：

      ```
      sudo visudo
      ```

   1. 在 `sudoers` 檔案的底部加入下列程式碼，然後儲存檔案。

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

      (上述範例使用 "\$1<space>" 來建立 Linux 空白字元。)

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

1. 使用任何 SSH 用戶端連線到執行個體。

1. 設定 Linux 執行個體以使用 Directory Service所提供 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動進行設定，請參閱 AWS 知識中心的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/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* 域中帳戶的 **sAMAccountName** 具備域加入權限。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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 用戶端連線到執行個體，並執行下列步驟，將 AWS 委派管理員群組新增至 sudoers 清單：

   1. 使用下列命令開啟 `sudoers` 檔案：

      ```
      sudo visudo
      ```

   1. 在 `sudoers` 檔案的底部加入下列程式碼，然後儲存檔案。

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

      (上述範例使用 "\$1<space>" 來建立 Linux 空白字元。)

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

1. 使用任何 SSH 用戶端連線到執行個體。

1. 設定 Linux 執行個體，讓其得以使用 Directory Service所提供之 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動設定，請參閱 AWS 知識中心中的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/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* 網域的 sAMAccountName 具備網域加入權限。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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 'AWS 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 用戶端連線到執行個體，並執行下列步驟，將 AWS 委派管理員群組新增至 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 執行個體以使用 Directory Service所提供 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動進行設定，請參閱 AWS 知識中心的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/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* 域中帳戶的 **sAMAccountName** 具備域加入權限。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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 用戶端連線到執行個體，並執行下列步驟，將 AWS 委派管理員群組新增至 sudoers 清單：

   1. 使用下列命令開啟 `sudoers` 檔案：

      ```
      sudo visudo
      ```

   1. 在 `sudoers` 檔案的底部加入下列程式碼，然後儲存檔案。

      ```
      ## Add the "AWS Delegated Administrators" group from the example.com domain.
      %AWS\ 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，`ldap_id_mapping = False`請在 sssd.conf 檔案中設定 。設定此值之前，請確認您已將 UID、UID 號碼和 GID 號碼新增至 Active Directory 中的使用者和群組。

**分散式使用者身分映射**  
如果 Active Directory 沒有 POSIX 延伸模組，或者如果您選擇不集中管理身分映射，Linux 可以計算 UID 和 GID 值。Linux 使用使用者的唯一安全識別符 (SID) 來維持一致性。

若要設定分散式使用者 ID 映射，`ldap_id_mapping = True`請在 sssd.conf 檔案中設定 。

**常見問題**  
如果您設定 `ldap_id_mapping = False`，有時啟動 SSSD 服務將會失敗。此失敗的原因是因為不支援變更 UIDs。當您從 ID 映射變更為 POSIX 屬性，或從 POSIX 屬性變更為 ID 映射時，我們建議您刪除 SSSD 快取。如需 ID 映射和 ldap\$1id\$1mapping 參數的進一步詳細資訊，請參閱 Linux 命令列中的 sssd-ldap(8) man 頁面。

## 連線至 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 手動將 Amazon EC2 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory
<a name="join_linux_instance_winbind"></a>

您可以使用 Winbind 服務，將 Amazon EC2 Linux 執行個體手動加入 AWS Managed Microsoft AD Active Directory 網域。這可讓您現有的內部部署 Active Directory 使用者在存取加入 AWS Managed Microsoft AD Active Directory 的 Linux 執行個體時，使用其 Active Directory 登入資料。系統支援下列 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 Enterprise Server 15 SP1

**注意**  
其他 Linux 分佈和版本也許能正常運作，但尚未經過測試。

## 將 Linux 執行個體加入 AWS Managed Microsoft AD Active Directory
<a name="join_linux_winbind_prereq"></a>

**重要**  
以下某些程序若未正確執行，可能會導致您的執行個體無法連線或無法使用。因此，我們強烈建議您在執行這些程序之前，對您的執行個體進行備份或擷取快照。

**將 Linux 執行個體加入您的目錄**  
使用以下其中一個標籤，依照您的特定 Linux 執行個體的步驟：

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

1. 使用任何 SSH 用戶端連線到執行個體。

1. 設定 Linux 執行個體，讓其得以使用 Directory Service所提供之 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動設定，請參閱 AWS 知識中心中的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/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* 域中具備域加入權限的帳戶。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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\\AWS\ 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 執行個體，讓其得以使用 Directory Service所提供之 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動設定，請參閱 AWS 知識中心中的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/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* 網域的 sAMAccountName 具備網域加入權限。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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. 在文字編輯器中開啟名稱服務交換器組態檔案 [`/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\\AWS\ 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 執行個體，讓其得以使用 Directory Service所提供之 DNS 伺服器的 DNS 伺服器 IP 地址。欲執行此作業，您可以在連接到 VPC 的 DHCP 選項集中進行設定，或在執行個體上手動設定。如果您想要手動設定，請參閱 AWS 知識中心中的[如何將靜態 DNS 伺服器指派給私有 Amazon EC2 執行個體](https://aws.amazon.com/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* 域中具備域加入權限的帳戶。請在系統提示時，輸入該帳戶的密碼。如需委派這些權限的詳細資訊，請參閱「[委派 AWS Managed 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. 在文字編輯器中開啟名稱服務交換器組態檔案 [`/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\\AWS\ 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%
```