Linux 域加入錯誤 - AWS Directory Service

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

Linux 域加入錯誤

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

Linux 執行個體無法加入網域或驗證

Ubuntu 14.04,16.04 和 18.04 實例必須在 DNS 中進行反向解析,然後一個領域才能與 Microsoft 活動目錄一起工作。否則,您可能會遇到以下兩種情況之一:

情況 1:尚未加入領域的 Ubuntu 執行個體

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

! 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) ! Insufficient permissions to join the domain realm: Couldn't join realm: Insufficient permissions to join the domain

情況 2:已加入領域的 Ubuntu 執行個體

對於已加入 Microsoft Active Directory 網域的 Ubuntu 執行個體,嘗試使用網域認證進入執行個體的 SSH 可能會失敗,並顯示下列錯誤:

$ ssh admin@EXAMPLE.COM@198.51.100

no such identity: /Users/username/.ssh/id_ed25519: 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_unix(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_sss(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_sss(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:~$ kinit admin@EXAMPLE.COM Password for admin@EXAMPLE.COM: ubuntu@ip-192-0-2-0:~$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: admin@EXAMPLE.COM

解決方法

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

[libdefaults] default_realm = EXAMPLE.COM rdns = false

無縫域加入的單向信任身分驗證問題

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

錯誤

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_winbind(sshd:auth): getting password (0x00000390)

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): pam_get_item returned a password

7 月 31 日 00:05: 請求失敗:WBC_ER_AUTH 錯誤, PAM_ 溫綁定 (身份驗證): 請求 wbcLogonUser 失敗:WBC_ER_ 驗證錯誤, PAM 錯誤:系統錯誤:找不到錯誤訊息:物件名稱。

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): internal module error (retval = PAM_SYSTEM_ERR(4), user = 'CORP\user')

解決方法

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

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

    sudo vim /etc/security/pam_winbind.conf
  2. 註解或移除以下指令 krb5_auth = yes

    [global] cached_login = yes krb5_ccache_type = FILE #krb5_auth = yes
  3. 停止 Winbind 服務,然後重新啟動它。

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