分享方式:


將 Ubuntu Linux 虛擬機器加入 Microsoft Entra Domain Services 受控網域

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

此文章示範如何將 Ubuntu Linux VM 加入受控網域。

必要條件

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

建立並聯機到 Ubuntu Linux VM

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

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

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

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

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

設定 hosts 檔案

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

sudo vi /etc/hosts

hosts 檔案中,更新 localhost 的位址。 在以下範例中:

  • aaddscontoso.com 為受控網域的 DNS 網域名稱。
  • ubuntu 是您加入受控網域的 Ubuntu VM 主機名稱。

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

127.0.0.1 ubuntu.aaddscontoso.com ubuntu

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

安裝必要的套件

VM 需要一些額外的套件,才能將 VM 加入受控網域。 若要安裝和設定這些套件,請使用 更新並安裝加入網域的工具 apt-get

在 Kerberos 安裝期間,krb5-user 套件的安裝會提示輸入領域名稱 (以全部大寫)。 例如,如果受控網域的名稱 aaddscontoso.com,請輸入 AADDSCONTOSO.COM 作為領域。 安裝會在 /etc/krb5.conf 設定檔中寫入 [realm][domain_realm] 區段。 請確定您已將領域指定為全部大寫:

sudo apt-get update
sudo apt-get install krb5-user samba sssd sssd-tools libnss-sss libpam-sss ntp ntpdate realmd adcli

設定網路時間通訊協定 (NTP)。

若要讓網域通訊正常運作,Ubuntu VM 的日期和時間必須與受控網域同步。 在 /etc/ntp.conf 檔案中新增受控網域的 NTP 主機名稱。

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

    sudo vi /etc/ntp.conf
    
  2. ntp.conf 檔案中,建立一行以新增受控網域的 DNS 名稱。 在下列範例中,會新增 aaddscontoso.com 的專案。 使用您自己的 DNS 名稱:

    server aaddscontoso.com
    

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

  3. 若要確定 VM 已與受控網域同步,您需要下列步驟:

    • 停止 NTP 伺服器
    • 從受控網域更新日期和時間
    • 啟動 NTP 服務

    執行下列命令以完成這些步驟。 使用您自己的 DNS 名稱搭配 ntpdate 命令:

    sudo systemctl stop ntp
    sudo ntpdate aaddscontoso.com
    sudo systemctl start ntp
    

將 VM 加入受控網域

既然已在 VM 上安裝必要的套件,且已設定 NTP,請將 VM 加入受控網域。

  1. 使用 realm discover 命令來探索受控網域。 以下範例會探索領域 AADDSCONTOSO.COM。 使用「全部大寫」指定您自己的受控網域名稱:

    sudo realm discover AADDSCONTOSO.COM
    

    如果 realm discover 命令找不到受控網域,請檢閱下列疑難排解步驟:

    • 確保可以從 VM 存取網域。 嘗試 ping aaddscontoso.com 查看是否傳回正回復。
    • 檢查 VM 已部署到有提供受控網域的相同或同儕節點虛擬網路上。
    • 確認虛擬網路的 DNS 伺服器設定已更新,以指向受控網域的網域控制站。
  2. 現在,使用 kinit 命令初始化 Kerberos。 指定屬於受控網域一部分的使用者。 如有需要,請將使用者帳戶新增至 Microsoft Entra ID 中的群組

    同樣地,受控功能變數名稱必須以 ALL UPPERCASE 輸入。 以下範例會使用名為 contosoadmin@aaddscontoso.com 的帳戶初始化 Kerberos。 輸入您本身屬於受控網域的使用者帳戶:

    sudo kinit -V contosoadmin@AADDSCONTOSO.COM
    
  3. 最後,使用 realm join 命令將 VM 加入受控網域。 使用屬於上一個 kinit 命令所指定之受控網域的相同使用者帳戶,例如 contosoadmin@AADDSCONTOSO.COM

    sudo realm join --verbose AADDSCONTOSO.COM -U 'contosoadmin@AADDSCONTOSO.COM' --install=/
    

將 VM 加入受控網域會需要一點時間。 下列範例輸出顯示 VM 已成功加入受控網域:

Successfully enrolled machine in realm

若您的 VM 無法順利完成加入網域的程序,請確定 VM 的網路安全性群組允許 TCP + UDP 連接埠 464 上的輸出 Kerberos 流量流向受控網域的虛擬網路子網路。

如果您收到錯誤未指定的 GSS 失敗。次要程式碼可能會提供詳細資訊 (在 Kerberos 資料庫中找不到伺服器),請開啟 /etc/krb5.conf 檔案,然後在 [libdefaults] 區段中新增下列程式碼,然後再試一次:

rdns=false

更新 SSSD 設定

在上一個步驟中安裝的其中一個套件是 System Security Services 精靈 (SSSD)。 當使用者嘗試使用網域認證登入 VM 時,SSSD 會將要求轉送給驗證提供者。 在此案例中,SSSD 會使用 Domain Services 來驗證要求。

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

    sudo vi /etc/sssd/sssd.conf
    
  2. 批註 use_fully_qualified_names 的行,如下所示:

    # use_fully_qualified_names = True
    

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

  3. 若要套用變更,請重新啟動 SSSD 服務:

    sudo systemctl restart sssd
    

進行使用者帳戶和群組設定

將 VM 加入受控網域並設定為驗證後,有幾個使用者設定選項可完成。 這些設定變更包括允許密碼型驗證,以及在網域使用者第一次登入時自動在本機 VM 上建立主目錄。

允許 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 ssh
    

設定自動主目錄建立

若要在使用者第一次登入時自動建立主目錄,請完成下列步驟:

  1. 在編輯器中開啟 /etc/pam.d/common-session 檔案:

    sudo vi /etc/pam.d/common-session
    
  2. 在此檔案中的 session optional pam_sss.so 行下方新增下列一行:

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
    

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

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

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

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

    sudo visudo
    
  2. 將下列項目新增至 /etc/sudoers 檔案尾端:

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

    完成後,請使用 Ctrl-X 命令儲存並結束編輯器。

使用網域帳戶登入 VM

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

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

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

    sudo pwd
    

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

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

    sudo id
    

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

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

    sudo apt-get update
    

下一步

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