

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

# Amazon EC2 Linux 執行個體網域聯結錯誤
<a name="ms_ad_troubleshooting_join_linux"></a>

以下可協助您疑難排解將 Amazon EC2 Linux 執行個體加入 AWS Managed Microsoft AD 目錄時可能遇到的一些錯誤訊息。

## Linux 執行個體無法加入網域或驗證
<a name="unable-to-join"></a>

Ubuntu 14.04、16.04 和 18.04 執行個體*必須在* DNS 中反向解析，領域才能使用 Microsoft Active Directory。否則，您可能會遇到以下兩種情況之一：

### 情況 1：尚未加入領域的 Ubuntu 執行個體
<a name="ubuntu-not-yet-joined"></a>

對於嘗試加入領域的 Ubuntu 執行個體，`sudo realm join` 命令可能無法提供加入網域的所需許可，並可能顯示以下錯誤：

\$1 Couldn't authenticate to active directory: SASL(-1): generic failure: GSSAPI Error: An invalid name was supplied (Success) adcli: couldn't connect to EXAMPLE.COM domain: Couldn't authenticate to active directory: SASL(-1): generic failure: GSSAPI Error: An invalid name was supplied (Success) \$1 Insufficient permissions to join the domain realm: Couldn't join realm: Insufficient permissions to join the domain

### 情況 2：已加入領域的 Ubuntu 執行個體
<a name="ubuntu-joined"></a>

對於已加入 Microsoft Active Directory 網域的 Ubuntu 執行個體，使用網域登入資料嘗試 SSH 進入執行個體可能會失敗，並出現下列錯誤：

\$1 ssh admin@EXAMPLE.COM@198.51.100

no such identity: /Users/username/.ssh/id\$1ed25519: No such file or directory

admin@EXAMPLE.COM@198.51.100's password:

Permission denied, please try again.

admin@EXAMPLE.COM@198.51.100's password:

如果您使用公有金鑰登入執行個體並查看 `/var/log/auth.log`，可能會看到下列有關無法找到使用者的錯誤：

May 12 01:02:12 ip-192-0-2-0 sshd[2251]: pam\$1unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.0

May 12 01:02:12 ip-192-0-2-0 sshd[2251]: pam\$1sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.0 user=admin@EXAMPLE.COM

May 12 01:02:12 ip-192-0-2-0 sshd[2251]: pam\$1sss(sshd:auth): received for user admin@EXAMPLE.COM: 10 (User not known to the underlying authentication module)

May 12 01:02:14 ip-192-0-2-0 sshd[2251]: Failed password for invalid user admin@EXAMPLE.COM from 203.0.113.0 port 13344 ssh2

May 12 01:02:15 ip-192-0-2-0 sshd[2251]: Connection closed by 203.0.113.0 [preauth]

不過，`kinit` 對於使用者仍然有效。請看如下範例：

ubuntu@ip-192-0-2-0:\$1\$1 kinit admin@EXAMPLE.COM Password for admin@EXAMPLE.COM: ubuntu@ip-192-0-2-0:\$1\$1 klist Ticket cache: FILE:/tmp/krb5cc\$11000 Default principal: admin@EXAMPLE.COM

### 解決方法
<a name="ubuntu-scenarios-workaround"></a>

目前對於這兩種情況的建議解決方法是停用 `/etc/krb5.conf` 中 [libdefaults] 區段的反向 DNS，如下所示：

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

## 無縫域加入的單向信任身分驗證問題
<a name="1-way-trust-auth-issues"></a>

如果您在 AWS Managed Microsoft AD 和內部部署 Active Directory 之間建立了單向傳出信任，則嘗試使用 Winbind 的信任 Active Directory 登入資料對加入 Linux 執行個體的網域進行身分驗證時，可能會遇到身分驗證問題。

### 錯誤
<a name="1-way-trust-auth-issues-errors"></a>

Jul 31 00:00:00 EC2AMAZ-LSMWqT sshd[23832]: Failed password for user@corp.example.com from xxx.xxx.xxx.xxx port 18309 ssh2

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam\$1winbind(sshd:auth): getting password (0x00000390)

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam\$1winbind(sshd:auth): pam\$1get\$1item returned a password

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam\$1winbind(sshd:auth): request wbcLogonUser failed: WBC\$1ERR\$1AUTH\$1ERROR, PAM error: PAM\$1SYSTEM\$1ERR (4), NTSTATUS: \$1\$1NT\$1STATUS\$1OBJECT\$1NAME\$1NOT\$1FOUND\$1\$1, Error message was: The object name is not found.

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam\$1winbind(sshd:auth): internal module error (retval = PAM\$1SYSTEM\$1ERR(4), user = 'CORP\$1user')

## 解決方法
<a name="1-way-trust-auth-issues-workaround"></a>

若要解決此問題，您需要執行下列步驟以註解或移除 PAM 模組組態檔 (`/etc/security/pam_winbind.conf`) 中的指令。

1. 在文字編輯器中開啟 `/etc/security/pam_winbind.conf` 檔案。

   ```
   sudo vim /etc/security/pam_winbind.conf
   ```

1. 註解或移除以下指令 **krb5\$1auth = yes**。

   ```
   [global]
   
   cached_login = yes
   krb5_ccache_type = FILE
   #krb5_auth = yes
   ```

1. 停止 Winbind 服務，然後重新啟動它。

   ```
   service winbind stop or systemctl stop winbind
   net cache flush 
   service winbind start or systemctl start winbind
   ```