

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

# 對與 Active Directory 的多使用者整合進行故障診斷
<a name="troubleshooting-v3-multi-user"></a>

本節與與與 Active Directory 整合的叢集相關。

如果 Active Directory 整合功能未如預期般運作，SSSD 日誌可以提供有用的診斷資訊。這些日誌位於叢集節點`/var/log/sssd`的 中。根據預設，它們也會存放在叢集的 Amazon CloudWatch 日誌群組中。

**Topics**
+ [Active Directory 特定疑難排解](#troubleshooting-v3-multi-ad-specific)
+ [啟用除錯模式](#troubleshooting-v3-multi-user-debug)
+ [如何從 LDAPS 移至 LDAP](#troubleshooting-v3-multi-user-ldaps-ldap)
+ [如何停用 LDAPS 伺服器憑證驗證](#troubleshooting-v3-multi-user-ldaps-verify)
+ [如何使用 SSH 金鑰而非密碼登入](#troubleshooting-v3-multi-user-ssh-login)
+ [如何重設使用者密碼和過期的密碼](#troubleshooting-v3-multi-user-reset-passwd)
+ [如何驗證加入的網域](#troubleshooting-v3-multi-user-domain-verify)
+ [如何疑難排解憑證的問題](#troubleshooting-v3-multi-user-certificates)
+ [如何驗證與 Active Directory 的整合是否正常運作](#troubleshooting-v3-multi-user-ad-verify)
+ [如何對登入運算節點進行故障診斷](#troubleshooting-v3-multi-user-ad-compute-node-login)
+ [多使用者環境中 SimCenter StarCCM\$1 任務的已知問題](#troubleshooting-v3-multi-user-ad-starccm)
+ [使用者名稱解析的已知問題](#troubleshooting-v3-multi-user-name-resolution)
+ [如何解決主目錄建立問題](#troubleshooting-v3-multi-home-directory)

## Active Directory 特定疑難排解
<a name="troubleshooting-v3-multi-ad-specific"></a>

本節與針對 Active Directory 類型進行疑難排解相關。

### Simple AD
<a name="troubleshooting-v3-multi-user-simple-ad"></a>
+ 此`DomainReadOnlyUser`值必須符合使用者的 Simple AD 目錄基礎搜尋：

  `cn=ReadOnlyUser,cn=Users,dc=corp,dc=example,dc=com`

  `cn` 的注意事項`Users`。
+ 預設管理員使用者為 `Administrator`。
+ `Ldapsearch` 在使用者名稱之前需要 NetBIOS 名稱。

  `Ldapsearch` 語法必須如下所示：

  ```
  $ ldapsearch -x -D "corp\\Administrator" -w "Password" -H ldap://192.0.2.103 \
     -b "cn=Users,dc=corp,dc=example,dc=com"
  ```

### AWS Managed Microsoft AD
<a name="troubleshooting-v3-multi-users-ms-ad"></a>
+ `DomainReadOnlyUser` 值必須符合 使用者的 AWS Managed Microsoft AD 目錄基礎搜尋：

  `cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com`
+ 預設管理員使用者為 `Admin`。
+ `Ldapsearch` 語法必須如下所示：

  ```
  $ ldapsearch -x -D "Admin" -w "Password" -H ldap://192.0.2.103 \
     -b "ou=Users,ou=CORP,dc=corp,dc=example,dc=com"
  ```

## 啟用除錯模式
<a name="troubleshooting-v3-multi-user-debug"></a>

從 SSSD 偵錯日誌有助於對問題進行疑難排解。若要啟用偵錯模式，您必須使用對叢集組態所做的下列變更來更新叢集：

```
DirectoryService:
  AdditionalSssdConfigs:
    debug_level: "0x1ff"
```

## 如何從 LDAPS 移至 LDAP
<a name="troubleshooting-v3-multi-user-ldaps-ldap"></a>

不建議從 LDAPS (LDAP 搭配 TLS/SSL) 移至 LDAP，因為僅 LDAP 不提供任何加密。不過，它對於測試目的和疑難排解很有用。

您可以使用先前的組態定義更新叢集，將叢集還原至先前的組態。

若要從 LDAPS 移至 LDAP，您必須在叢集組態中使用下列變更來更新叢集：

```
DirectoryService:
  LdapTlsReqCert: never
  AdditionalSssdConfigs:
    ldap_auth_disable_tls_never_use_in_production: True
```

## 如何停用 LDAPS 伺服器憑證驗證
<a name="troubleshooting-v3-multi-user-ldaps-verify"></a>

在前端節點上暫時停用 LDAPS 伺服器憑證驗證非常有用，可用於測試或故障診斷。

您可以使用先前的組態定義更新叢集，將叢集還原至先前的組態。

若要停用 LDAPS 伺服器憑證驗證，您必須在叢集組態中使用下列變更來更新叢集：

```
DirectoryService:
  LdapTlsReqCert: never
```

## 如何使用 SSH 金鑰而非密碼登入
<a name="troubleshooting-v3-multi-user-ssh-login"></a>

在您第一次使用密碼登入`/home/$user/.ssh/id_rsa`後，會在 中建立 SSH 金鑰。若要使用 SSH 金鑰登入，您必須使用密碼登入，在本機複製 SSH 金鑰，然後照常將其用於 SSH 無密碼：

```
$ ssh -i $LOCAL_PATH_TO_SSH_KEY $username@$head_node_ip
```

## 如何重設使用者密碼和過期的密碼
<a name="troubleshooting-v3-multi-user-reset-passwd"></a>

如果使用者無法存取叢集，其[AWS Managed Microsoft AD 密碼可能已過期](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_password_policies.html)。

若要重設密碼，請對具有 目錄寫入許可的使用者和角色執行下列命令：

```
$ aws ds reset-user-password \
  --directory-id "d-abcdef01234567890" \
  --user-name "USER_NAME" \
  --new-password "NEW_PASSWORD" \
  --region "region-id"
```

如果您重設 [`DirectoryService`](DirectoryService-v3.md) / 的密碼[`DomainReadOnlyUser`](DirectoryService-v3.md#yaml-DirectoryService-DomainReadOnlyUser)：

1. 請務必使用新密碼更新 [`DirectoryService`](DirectoryService-v3.md) / [`PasswordSecretArn`](DirectoryService-v3.md#yaml-DirectoryService-PasswordSecretArn)秘密。

1. 更新叢集的新秘密值：

   1. 使用 `pcluster update-compute-fleet`命令停止運算機群。

   1. 從叢集前端節點內執行下列命令。

      ```
      $ sudo /opt/parallelcluster/scripts/directory_service/update_directory_service_password.sh
      ```

密碼重設和叢集更新後，應還原使用者的叢集存取權。

如需詳細資訊，請參閱《 *Directory Service 管理指南*》中的[重設使用者密碼](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_reset_password.html)。

## 如何驗證加入的網域
<a name="troubleshooting-v3-multi-user-domain-verify"></a>

下列命令必須從加入網域的執行個體執行，而非前端節點。

```
$ realm list corp.example.com \
  type: kerberos \
  realm-name: CORP.EXAMPLE.COM \
  domain-name: corp.example.com \
  configured: kerberos-member \
  server-software: active-directory \
  client-software: sssd \
  required-package: oddjob \
  required-package: oddjob-mkhomedir \
  required-package: sssd \
  required-package: adcli \
  required-package: samba-common-tools \
  login-formats: %U \
  login-policy: allow-realm-logins
```

## 如何疑難排解憑證的問題
<a name="troubleshooting-v3-multi-user-certificates"></a>

當 LDAPS 通訊無法運作時，可能是由於 TLS 通訊中的錯誤，進而可能是憑證問題所致。

**憑證的注意事項：**
+ 叢集組態中指定的憑證`LdapTlsCaCert`必須是一組 PEM 憑證，其中包含為網域控制站發行憑證的整個授權憑證 (CA) 鏈的憑證。
+ PEM 憑證套件是由 PEM 憑證串連而成的檔案。
+ PEM 格式的憑證 （通常用於 Linux) 等同於 base64 DER 格式的憑證 （通常由 Windows 匯出）。
+ 如果網域控制站的憑證是由次級 CA 發行，則憑證套件必須包含次級 CA 和根 CA 的憑證。

**對驗證步驟進行故障診斷：**

下列驗證步驟假設命令是從叢集前端節點內執行，且網域控制器可在 連線`SERVER:PORT`。

若要對與憑證相關的問題進行疑難排解，請遵循下列驗證步驟：

**驗證步驟：**

1. **檢查與 Active Directory 網域控制站的連線：**

   確認您可以連線至網域控制器。如果此步驟成功，則與網域控制站的 SSL 連線成功，且憑證已驗證。您的問題與憑證無關。

   如果此步驟失敗，請繼續下一個驗證。

   ```
   $ openssl s_client -connect SERVER:PORT -CAfile PATH_TO_CA_BUNDLE_CERTIFICATE
   ```

1. **檢查憑證驗證：**

   確認本機 CA 憑證套件可以驗證網域控制器提供的憑證。如果此步驟成功，則您的問題與憑證無關，但與其他聯網問題有關。

   如果此步驟失敗，請繼續下一個驗證。

   ```
   $ openssl verify -verbose -CAfile PATH_TO_CA_BUNDLE_CERTIFICATE PATH_TO_A_SERVER_CERTIFICATE
   ```

1. **檢查 Active Directory 網域控制站提供的憑證：**

   驗證網域控制站提供的憑證內容是否如預期。如果此步驟成功，您可能會遇到用於驗證控制器的 CA 憑證問題，請前往下一個故障診斷步驟。

   如果此步驟失敗，您必須更正為網域控制站發行的憑證，並重新執行故障診斷步驟。

   ```
   $ openssl s_client -connect SERVER:PORT -showcerts
   ```

1. **檢查憑證的內容：**

   驗證網域控制站提供的憑證內容是否如預期。如果此步驟成功，您可能會遇到用於驗證控制器的 CA 憑證問題，請前往下一個疑難排解步驟。

   如果此步驟失敗，您必須更正為網域控制站發行的憑證，並重新執行故障診斷步驟。

   ```
   $ openssl s_client -connect SERVER:PORT -showcerts
   ```

1. **檢查本機 CA 憑證套件的內容：**

   驗證用於驗證網域控制站憑證的本機 CA 憑證套件內容是否如預期。如果此步驟成功，您可能會遇到網域控制站提供的憑證問題。

   如果此步驟失敗，您必須更正為網域控制站發行的 CA 憑證套件，並重新執行故障診斷步驟。

   ```
   $ openssl x509 -in PATH_TO_A_CERTIFICATE -text
   ```

## 如何驗證與 Active Directory 的整合是否正常運作
<a name="troubleshooting-v3-multi-user-ad-verify"></a>

如果以下兩個檢查成功，則與 Active Directory 的整合正在運作。

**檢查：**

1. **您可以探索 目錄中定義的使用者：**

   從叢集前端節點內，做為 `ec2-user`：

   ```
   $ getent passwd $ANY_AD_USER
   ```

1. **您可以在提供使用者密碼的前端節點中 SSH：**

   ```
   $ ssh $ANY_AD_USER@$HEAD_NODE_IP
   ```

如果檢查一失敗，我們預期檢查二也會失敗。

其他疑難排解檢查：
+ 確認使用者存在於 目錄中。
+ 啟用[偵錯記錄](#troubleshooting-v3-multi-user-debug)。
+ 考慮[從 LDAPS 移至 LDAP](#troubleshooting-v3-multi-user-ldaps-ldap) 暫時停用加密，以排除 LDAPS 問題。

## 如何對登入運算節點進行故障診斷
<a name="troubleshooting-v3-multi-user-ad-compute-node-login"></a>

本節與登入以運算與 Active Directory 整合之叢集中的節點有關。

使用 時 AWS ParallelCluster，設計會停用叢集運算節點的密碼登入。

所有使用者都必須使用自己的 SSH 金鑰登入運算節點。

如果在叢集組態中[`GenerateSshKeysForUsers`](DirectoryService-v3.md#yaml-DirectoryService-GenerateSshKeysForUsers)啟用 ，使用者可以在第一次身分驗證 （例如登入） 之後，在前端節點中擷取其 SSH 金鑰。

當使用者第一次在前端節點上進行身分驗證時，他們可以擷取以目錄使用者身分自動為其產生的 SSH 金鑰。也會為使用者建立主目錄。當 sudo 使用者第一次切換到前端節點中的使用者時，也可能發生這種情況。

如果使用者尚未登入前端節點，則不會產生 SSH 金鑰，而且使用者將無法登入運算節點。

## 多使用者環境中 SimCenter StarCCM\$1 任務的已知問題
<a name="troubleshooting-v3-multi-user-ad-starccm"></a>

本節與 Simcenter StarCCM\$1 運算流體動力學軟體從 Siemens 在多使用者環境中啟動的任務相關。

如果您執行設定為使用內嵌 IntelMPI 的 StarCCM\$1 v16 任務，預設會使用 SSH 引導 MPI 程序。

由於已知的[Slurm錯誤](https://bugs.schedmd.com/show_bug.cgi?id=13385)導致使用者名稱解析錯誤，任務可能會失敗並出現 等錯誤`error setting up the bootstrap proxies`。此錯誤只會影響 3.1.1 和 3.1.2 AWS ParallelCluster 版。

若要防止這種情況發生，請強制 IntelMPI 使用 Slurm做為 MPI 引導方法。將環境變數匯出`I_MPI_HYDRA_BOOTSTRAP=slurm`至啟動 StarCCM\$1 的任務指令碼，如 [IntelMPI 官方文件](https://www.intel.com/content/www/us/en/develop/documentation/mpi-developer-reference-linux/top/environment-variable-reference/hydra-environment-variables.html)所述。

## 使用者名稱解析的已知問題
<a name="troubleshooting-v3-multi-user-name-resolution"></a>

本節與在任務中擷取使用者名稱相關。

由於 [Slurm 中的已知錯誤](https://bugs.schedmd.com/show_bug.cgi?id=13385)，`nobody`如果您在沒有 的情況下執行任務，則任務程序中擷取的使用者名稱可能是 `srun`。此錯誤只會影響 3.1.1 和 3.1.2 AWS ParallelCluster 版。

例如，如果您以目錄使用者`sbatch --wrap 'srun id'`身分執行 命令，則會傳回正確的使用者名稱。不過，如果您以目錄使用者`sbatch --wrap 'id'`身分執行 ， `nobody`可能會傳回為使用者名稱。

您可以使用下列解決方法。

1. 如果可能`'sbatch'`，請使用 `'srun'`而非 啟動您的任務。

1. 在叢集組態中設定 [AdditionalSssdConfigs](DirectoryService-v3.md#yaml-DirectoryService-AdditionalSssdConfigs) 以啟用 SSSD 列舉，如下所示。

   ```
   AdditionalSssdConfigs:
     enumerate: true
   ```

## 如何解決主目錄建立問題
<a name="troubleshooting-v3-multi-home-directory"></a>

本節與主目錄建立問題相關。

如果您看到如下範例所示的錯誤，當您第一次登入前端節點時，不會為您建立主目錄。或者，當您第一次從 sudoer 切換到 head 節點中的 Active Directory 使用者時，不會為您建立主目錄。

```
$ ssh AD_USER@$HEAD_NODE_IP
/opt/parallelcluster/scripts/generate_ssh_key.sh failed: exit code 1

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
Could not chdir to home directory /home/PclusterUser85: No such file or directory
```

主目錄建立失敗的原因可能是叢集前端節點中安裝的 `oddjob`和 `oddjob-mkhomedir`套件。

如果沒有主目錄和 SSH 金鑰，使用者就無法將任務或 SSH 提交至叢集節點。

如果您需要系統中的`oddjob`套件，請確認`oddjobd`服務正在執行中，並重新整理 PAM 組態檔案，以確保已建立主目錄。若要這樣做，請在前端節點中執行命令，如下列範例所示。

```
sudo systemctl start oddjobd
sudo authconfig --enablemkhomedir --updateall
```

如果您不需要系統中的`oddjob`套件，請將其解除安裝並重新整理 PAM 組態檔案，以確保已建立主目錄。若要這樣做，請在前端節點中執行命令，如下列範例所示。

```
sudo yum remove -y oddjob oddjob-mkhomedir
sudo authconfig --enablemkhomedir --updateall
```