將 Ubuntu Linux 虛擬機器加入 Microsoft Entra Domain Services 受控網域
若要讓使用者利用單一認證組合在 Azure 中登入虛擬機器 (VM),您可以將 VM 加入 Microsoft Entra Domain Services 受控網域。 將 VM 加入 Domain Services 受控網域後,即可透過網域的使用者帳戶與認證來登入並管理伺服器。 同時套用受控網域的群組成員資格,讓您在 VM 上控制檔案或服務的存取權。
此文章示範如何將 Ubuntu Linux VM 加入受控網域。
必要條件
若要完成本教學課程,您需要下列資源和權限:
- 有效的 Azure 訂閱。
- 如果您沒有 Azure 訂用帳戶,請先建立帳戶。
- 與訂用帳戶相關聯的 Microsoft Entra 租用戶,且其已與內部部署目錄或純雲端目錄同步。
- 已在您 Microsoft Entra 租用戶中啟用並設定的 Microsoft Entra Domain Services 受控網域。
- 如有需要,第一個教學課程會說明建立和設定 Microsoft Entra Domain Services 受控網域。
- 屬於受控網域一部分的使用者帳戶。 確定不會自動產生使用者的 SAMAccountName 屬性。 如果 Microsoft Entra 租用戶中的多個使用者帳戶具有相同的 mailNickname 屬性,則會自動產生每個使用者的 SAMAccountName 屬性。 如需詳細資訊,請參閱如何在 Microsoft Entra Domain Services 受控網域中同步物件和認證。
- 最多為 15 個字元的獨特 Linux VM 名稱,來避免可能在 Active Directory 中造成衝突的截斷名稱。
建立並聯機到 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 主機名稱。
使用編輯器開啟 ntp.conf 檔案:
sudo vi /etc/ntp.conf
在 ntp.conf 檔案中,建立一行以新增受控網域的 DNS 名稱。 在下列範例中,會新增 aaddscontoso.com 的專案。 使用您自己的 DNS 名稱:
server aaddscontoso.com
完成後,請使用編輯器的
:wq
命令儲存並結束 ntp.conf 檔案。若要確定 VM 已與受控網域同步,您需要下列步驟:
- 停止 NTP 伺服器
- 從受控網域更新日期和時間
- 啟動 NTP 服務
執行下列命令以完成這些步驟。 使用您自己的 DNS 名稱搭配
ntpdate
命令:sudo systemctl stop ntp sudo ntpdate aaddscontoso.com sudo systemctl start ntp
將 VM 加入受控網域
既然已在 VM 上安裝必要的套件,且已設定 NTP,請將 VM 加入受控網域。
使用
realm discover
命令來探索受控網域。 以下範例會探索領域 AADDSCONTOSO.COM。 使用「全部大寫」指定您自己的受控網域名稱:sudo realm discover AADDSCONTOSO.COM
如果
realm discover
命令找不到受控網域,請檢閱下列疑難排解步驟:- 確保可以從 VM 存取網域。 嘗試
ping aaddscontoso.com
查看是否傳回正回復。 - 檢查 VM 已部署到有提供受控網域的相同或同儕節點虛擬網路上。
- 確認虛擬網路的 DNS 伺服器設定已更新,以指向受控網域的網域控制站。
- 確保可以從 VM 存取網域。 嘗試
現在,使用
kinit
命令初始化 Kerberos。 指定屬於受控網域一部分的使用者。 如有需要,請將使用者帳戶新增至 Microsoft Entra ID 中的群組。同樣地,受控功能變數名稱必須以 ALL UPPERCASE 輸入。 以下範例會使用名為
contosoadmin@aaddscontoso.com
的帳戶初始化 Kerberos。 輸入您本身屬於受控網域的使用者帳戶:sudo kinit -V contosoadmin@AADDSCONTOSO.COM
最後,使用
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 來驗證要求。
使用編輯器開啟 sssd.conf 檔案:
sudo vi /etc/sssd/sssd.conf
批註 use_fully_qualified_names 的行,如下所示:
# use_fully_qualified_names = True
完成後,請使用編輯器的
:wq
命令儲存並結束 sssd.conf 檔案。若要套用變更,請重新啟動 SSSD 服務:
sudo systemctl restart sssd
進行使用者帳戶和群組設定
將 VM 加入受控網域並設定為驗證後,有幾個使用者設定選項可完成。 這些設定變更包括允許密碼型驗證,以及在網域使用者第一次登入時自動在本機 VM 上建立主目錄。
允許 SSH 的密碼驗證
根據預設,使用者只能使用 SSH 公開金鑰型驗證登入 VM。 密碼式驗證失敗。 當您將 VM 加入受控網域時,這些網域帳戶都必須使用密碼型驗證。 更新 SSH 組態允許密碼型驗證,如下所示。
使用編輯器開啟 sshd_conf 檔案:
sudo vi /etc/ssh/sshd_config
將 PasswordAuthentication 一行更新為 是:
PasswordAuthentication yes
完成後,請使用編輯器的
:wq
命令儲存並結束 sshd_conf 檔案。若要套用變更並讓使用者使用密碼登入,請重新開機 SSH 服務:
sudo systemctl restart ssh
設定自動主目錄建立
若要在使用者第一次登入時自動建立主目錄,請完成下列步驟:
在編輯器中開啟
/etc/pam.d/common-session
檔案:sudo vi /etc/pam.d/common-session
在此檔案中的
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
命令。
開啟 sudoers 檔案進行編輯:
sudo visudo
將下列項目新增至 /etc/sudoers 檔案尾端:
# Add 'AAD DC Administrators' group members as admins. %AAD\ DC\ Administrators ALL=(ALL) NOPASSWD:ALL
完成後,請使用
Ctrl-X
命令儲存並結束編輯器。
使用網域帳戶登入 VM
若要驗證 VM 已成功加入受控網域,請使用網域使用者帳戶啟動新的 SSH 連線。 確認已建立主目錄,且已套用網域中的群組成員資格。
從主控台建立新的 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
成功連線到 VM 時,請確認已正確初始化主目錄:
sudo pwd
您應該在 /home 目錄中,且目錄符合使用者帳戶。
現在檢查是否已正確解析群組成員資格:
sudo id
您應該會看到來自受控網域的群組成員資格。
如果您以 AAD DC Administrators 群組的成員身分登入 VM,請檢查您是否可以正確使用
sudo
命令:sudo apt-get update
下一步
如果您將 VM 連線到受控網域或使用網域帳戶登入時遇到問題,請參閱針對網域加入問題進行疑難排解。