將 SUSE Linux Enterprise 虛擬機器加入 Azure Active Directory Domain Services 受控網域

若要讓使用者在 Azure 中 使用一組認證登入虛擬機器 (VM),您可以將 VM 加入 Azure Active Directory Domain Services (Azure AD DS) 受控網域。 當您將 VM 加入 Azure AD DS 受控網域時,可透過網域的使用者帳戶和認證來登入並管理伺服器。 同時套用受控網域的群組成員資格,讓您在 VM 上控制檔案或服務的存取權。

本文示範如何將 SUSE Linux Enterprise (SLE) VM 加入受控網域。

必要條件

若要完成此教學課程,您需要下列資源和權限:

建立並連線至 SLE Linux VM

如果您在 Azure 中已有 SLE Linux VM,請將 SSH 連線到該 VM,並繼續進行下一個步驟來開始設定 VM

如果您需要建立 SLE Linux VM,或想要建立測試 VM 配合本文使用,您可以使用下列其中一種方法:

建立 VM 時,請注意虛擬網路設定,確保 VM 可以與受控網域通訊:

  • 將 VM 部署至已啟用 Azure AD Domain Services 的相同 (或對等) 虛擬網路。
  • 將 VM 部署至 Azure AD Domain Services 受控網域以外的其他的子網路。

部署 VM 之後,請遵循這些步驟,使用 SSH 連線到 VM。

設定 hosts 檔案

若要確定 VM 主機名稱已針對受控網域正確設定,請編輯 /etc/hosts 檔案並設定主機名稱:

sudo vi /etc/hosts

hosts 檔案中,更新 localhost 的位址。 在下例中︰

  • aaddscontoso.com 為受控網域的 DNS 網域名稱。
  • linux-q2gr 是您正加入受控網域的 SLE VM 主機名稱。

請以您自己的值更新這些名稱:

127.0.0.1 linux-q2gr linux-q2gr.aaddscontoso.com

完成後,請使用編輯器的 :wq 命令儲存並結束 hosts 檔案。

使用 SSSD 將 VM 加入受控網域

若要使用 SSSD 和 YaST 的使用者登入管理模組加入受控網域,請完成下列步驟:

  1. 安裝使用者登入管理 YaST 模組:

    sudo zypper install yast2-auth-client
    
  2. 開啟 YaST。

  3. 若要於稍後成功使用 DNS 自動探索,請將受控網域 IP 位址 (Active Directory 伺服器) 設定為用戶端的名稱伺服器。

    在 YaST 中,選取 [系統 > 網路設定]。

  4. 選取 [主機名稱/DNS] 索引標籤,然後在 [名稱伺服器 1] 文字方塊中輸入受控網域的 IP 位址。 您受控網域的這些 IP 位址會顯示在Azure 入口網站的 [屬性] 視窗中,例如 10.0.2.410.0.2.5

    新增您自己的受控網域 IP 位址,然後選取 [確定]。

  5. 從 YaST 主視窗中,選取 [網路服務] > [使用者登入管理]。

    模組開啟後,會顯示電腦的不同網路屬性,以及使用中驗證方法的概觀,如下列範例螢幕擷取畫面所示:

    Example screenshot of the User Login Management window in YaST

    若要開始編輯,請選取 [變更設定]。

若要將 VM 加入受控網域,請完成下列步驟:

  1. 在對話方塊中,選取 [新增網域]。

  2. 指定正確的網域名稱 (例如 aaddscontoso.com),然後指定要用於身分識別資料和驗證的服務。 針對兩者選取 [Microsoft Active Directory]。

    確定已選取 [啟用網域] 的選項。

  3. 在準備就緒時,選取 [確定]。

  4. 接受下列對話方塊中的預設設定,然後選取 [確定]。

  5. VM 會視需要安裝其他軟體,然後檢查受控網域是否存在。

    如果一切正確,則會顯示下列的範例對話方塊,表示 VM 已發現受控網域,但您尚未註冊

    Example screenshot of the Active Directory enrollment window in YaST

  6. 對話方塊中,請指定屬於受控網域使用者的 [使用者名稱] 和 [密碼]。 如有需要,請新增一個使用者帳戶至 Azure AD 中的群組

    若要確定已針對 Samba 啟用目前的網域,請啟用 覆寫 Samba 設定以配合此 AD 作業

  7. 若要註冊,請選取 [確定]。

  8. 系統會顯示一則訊息,表示您已成功註冊。 若要完成,請選取 [確定]。

在受控網域中註冊 VM 之後,請使用 [管理網域使用者登入] 設定用戶端,如下列範例螢幕擷取畫面所示:

Example screenshot of the Manage Domain User Logon window in YaST

  1. 若要使用受控網域提供的資料來允許登入,請核取 [允許網域使用者登入] 方塊。

  2. 可以選擇在 [啟用網域資料來源] 下方,視您的環境需要檢查其他資料來源。 這些選項包括哪些使用者可以使用 sudo 或有哪些網路磁碟機可用。

  3. 若要允許受控網域中的使用者在 VM 上擁有主目錄,請核取 [建立主目錄] 方塊。

  4. 從側邊欄位選取 [服務選項 › 切換名稱],然後選取 [擴充選項]。 從該視窗中選取 [fallback_homedir] 或 [override_homedir],然後選取 [新增]。

  5. 為主目錄位置指定值。 若要讓主目錄遵循 /home/USER_NAME 的格式,請使用 /home/%u。 如需可能變數的詳細資訊,請參閱 sssd.conf 手冊頁 (man 5 sssd.conf) 的 override_homedir 一節。

  6. 選取 [確定]。

  7. 若要儲存變更,請選取 [確定]。 然後,請確定現在顯示的值正確無誤。 若要離開對話方塊,請選取 [取消]。

  8. 如果您想要同時執行 SSSD 和 Winbind (例如透過 SSSD 加入時,卻接著執行 Samba 檔案伺服器),Samba 選項 kerberos 方法應設定為 smb.conf 中的祕密和金鑰表。 SSSD 選項 ad_update_samba_machine_account_password 也應在 sssd.conf 中設定為 true。 這些選項可防止系統金鑰表無法同步。

使用 Winbind 將 VM 加入受控網域

若要使用 Winbind 和 YaST 的 Windows 網域成員資格模組來加入受控網域,請完成下列步驟:

  1. 在 YaST 中,選取 [網路服務] > [Windows 網域成員資格]。

  2. 在 [Windows網域成員資格] 畫面中,輸入要加入網域或工作群組的網域。 輸入受控網域名稱,例如 aaddscontoso.com

    Example screenshot of the Windows Domain Membership window in YaST

  3. 若要使用 SMB 來源進行 Linux 驗證,請核取 [使用 SMB 資訊進行 Linux 驗證] 的選項。

  4. 若要為 VM 上的受控網域使用者自動建立本機主目錄,請檢查 [登入時建立主目錄] 的選項。

  5. 核取 [離線驗證] 的選項,以允許您的網域使用者登入,即使受控網域暫時無法使用也能登入。

  6. 如果您想要替 Samba 使用者和群組變更 UID 和 GID 範圍,請選取 [專家設定]。

  7. 透過選取 [NTP 組態],替受控網域設定網路時間通訊協定 (NTP) 時間同步處理。 輸入受控網域的 IP 位址。 您受控網域的這些 IP 位址會顯示在Azure 入口網站的 [屬性] 視窗中,例如 10.0.2.410.0.2.5

  8. 選取 [確定],並在系統提示時確認加入網域。

  9. 提供受控網域中系統管理員的密碼,然後選取 [確定]。

    Example screenshot of the authentication dialog prompt when you join a SLE VM to the managed domain

加入受控網域後,您可以使用桌面或主控台的顯示管理員,從工作站登入該網域。

使用 YaST 命令列介面中的 Winbind 將 VM 加入受控網域

若要加入受控網域,請使用 Winbind 以及 YaST 命令列介面

  • 加入網域:

    sudo yast samba-client joindomain domain=aaddscontoso.com user=<admin> password=<admin password> machine=<(optional) machine account>
    

使用來自終端機的 Winbind 將 VM 加入受控網域

若要使用 Winbindsamba net 命令加入受控網域:

  1. 安裝 kerberos 用戶端和 samba-winbind:

    sudo zypper in krb5-client samba-winbind
    
  2. 編輯組態檔:

    • /etc/samba/smb.conf

      [global]
          workgroup = AADDSCONTOSO
          usershare allow guests = NO #disallow guests from sharing
          idmap config * : backend = tdb
          idmap config * : range = 1000000-1999999
          idmap config AADDSCONTOSO : backend = rid
          idmap config AADDSCONTOSO : range = 5000000-5999999
          kerberos method = secrets and keytab
          realm = AADDSCONTOSO.COM
          security = ADS
          template homedir = /home/%D/%U
          template shell = /bin/bash
          winbind offline logon = yes
          winbind refresh tickets = yes
      
    • /etc/krb5.conf

      [libdefaults]
          default_realm = AADDSCONTOSO.COM
          clockskew = 300
      [realms]
          AADDSCONTOSO.COM = {
              kdc = PDC.AADDSCONTOSO.COM
              default_domain = AADDSCONTOSO.COM
              admin_server = PDC.AADDSCONTOSO.COM
          }
      [domain_realm]
          .aaddscontoso.com = AADDSCONTOSO.COM
      [appdefaults]
          pam = {
              ticket_lifetime = 1d
              renew_lifetime = 1d
              forwardable = true
              proxiable = false
              minimum_uid = 1
          }
      
    • /etc/security/pam_winbind.conf

      [global]
          cached_login = yes
          krb5_auth = yes
          krb5_ccache_type = FILE
          warn_pwd_expire = 14
      
    • /etc/nsswitch.conf

      passwd: compat winbind
      group: compat winbind
      
  3. 檢查 Azure AD 和 Linux 的日期和時間是否同步。將 Azure AD 伺服器新增至 NTP 服務即可進行這項作業:

    1. 將下面這行新增至 /etc/yum.conf:

      server aaddscontoso.com
      
    2. 重新啟動 NTP 服務:

      sudo systemctl restart ntpd
      
  4. 加入網域:

    sudo net ads join -U Administrator%Mypassword
    
  5. 啟用 Winbind 作為 Linux 插入式驗證模組 (PAM) 中的登入來源:

    pam-config --add --winbind
    
  6. 啟用自動建立主目錄,讓使用者可以登入:

    pam-config -a --mkhomedir
    
  7. 啟動並啟用 Winbind 服務:

    sudo systemctl enable winbind
    sudo systemctl start winbind
    

允許 SSH 的密碼驗證

根據預設,使用者只能使用 SSH 公開金鑰型驗證登入 VM。 密碼式驗證失敗。 當您將 VM 加入受控網域時,這些網域帳戶都必須使用密碼型驗證。 更新 SSH 組態允許密碼型驗證,如下所示。

  1. 使用編輯器開啟 sshd_conf 檔案:

    sudo vi /etc/ssh/sshd_config
    
  2. PasswordAuthentication 一行更新為

    PasswordAuthentication yes
    

    完成後,請使用編輯器的 :wq 命令儲存並結束 sshd_conf 檔案。

  3. 若要套用變更並讓使用者使用密碼登入,請重新開機 SSH 服務:

    sudo systemctl restart sshd
    

授與 'AAD DC Administrators' 群組 sudo 權限

若要授與 SLE VM 上 AAD DC Administrators 群組系統管理許可權的成員,請將專案新增至 /etc/sudoers。 新增後,AAD DC Administrators 群組的成員就能使用 SLE VM 上的 sudo 命令。

  1. 開啟 sudoers 檔案進行編輯:

    sudo visudo
    
  2. 將下列項目新增至 /etc/sudoers 檔案尾端。 AAD DC Administrators 群組包含名稱中的空白字元,因此請在群組名稱中涵蓋反斜線逸出字元。 新增您自己的網域名稱,例如 aaddscontoso.com

    # Add 'AAD DC Administrators' group members as admins.
    %AAD\ DC\ Administrators@aaddscontoso.com ALL=(ALL) NOPASSWD:ALL
    

    完成後,請使用編輯器的 :wq 命令儲存並結束編輯器。

使用網域帳戶登入 VM

若要驗證 VM 已成功加入受控網域,請使用網域使用者帳戶啟動新的 SSH 連線。 確認已建立主目錄,且已套用網域中的群組成員資格。

  1. 從主控台建立新的 SSH 連線。 使用 ssh -l 命令來利用屬於受控網域的網域帳戶,例如 contosoadmin@aaddscontoso.com,然後輸入 VM 的位址,例如 linux-q2gr.aaddscontoso.com。 如果您是使用 Azure Cloud Shell,請使用 VM 的公用 IP 位址,而不是內部 DNS 名稱。

    ssh -l contosoadmin@AADDSCONTOSO.com linux-q2gr.aaddscontoso.com
    
  2. 成功連線到 VM 時,請確認已正確初始化主目錄:

    pwd
    

    您應該在 /home 目錄中,且目錄符合使用者帳戶。

  3. 現在檢查是否已正確解析群組成員資格:

    id
    

    您應該會看到來自受控網域的群組成員資格。

  4. 如果您以 AAD DC Administrators 群組的成員身分登入 VM,請檢查您是否可以正確使用 sudo 命令:

    sudo zypper update
    

後續步驟

如果您將 VM 連線到受控網域或使用網域帳戶登入時遇到問題,請參閱針對網域加入問題進行疑難排解