將 Ubuntu Linux 虛擬機加入 Microsoft Entra Domain Services 受控網域
若要讓使用者使用單一認證集合登入 Azure 中的虛擬機(VM),您可以將 VM 加入至 Microsoft Entra Domain Services 受控網域。 當您將 VM 加入 Domain Services 受控網域時,網域中的使用者帳戶和認證可用來登入和管理伺服器。 也會套用受控網域中的群組成員資格,讓您控制 VM 上檔案或服務的存取權。
本文說明如何將UbuntuLinux VM加入受控網域。
先決條件
若要完成本教學課程,您需要下列資源和許可權:
- 作用中的 Azure 訂用帳戶。
- 如果您沒有 Azure 訂用帳戶,建立帳戶。
- 與您的訂閱相關聯的 Microsoft Entra 租戶,會同步至內部部署目錄或僅限雲端目錄。
- 在您的 Microsoft Entra 租用戶中啟用並設定Microsoft Entra Domain Services 受控網域。
- 如有需要,第一個教學課程 會建立及設定 Microsoft Entra Domain Services 受控網域。
- 屬於受控網域一部分的用戶帳戶。 請確定使用者的 SAMAccountName 屬性未自動產生。 如果 Microsoft Entra 租用戶中的多個帳戶具有相同的 mailNickname 屬性,則會自動產生屬於每個使用者的 SAMAccountName 屬性。 如需詳細資訊,請參閱 如何在 Microsoft Entra Domain Services 受控網域中同步處理對象和認證。
- 為避免在Active Directory中因名稱截斷而造成的衝突,Linux虛擬機的名稱應唯一且不超過15個字元。
建立並連線到Ubuntu Linux VM
如果您在 Azure 中有現有的 Ubuntu Linux VM,請使用 SSH 連線到它,然後繼續進行下一個步驟,開始設定 VM。
如果您需要建立 Ubuntu Linux VM,或想要建立測試 VM 以搭配本文使用,您可以使用下列其中一種方法:
當您建立 VM 時,請注意虛擬網路設定,以確定 VM 可以與受控網域通訊:
- 將 VM 部署到您已在其中啟用Microsoft Entra Domain Services 的相同或對等互連虛擬網路。
- 將 VM 部署到與您Microsoft Entra Domain Services 受控網域不同的子網。
部署 VM 之後,請遵循使用 SSH 連線到 VM 的步驟。
設定主機檔案
若要確定已針對受控網域正確設定 VM 主機名,請編輯 /etc/hosts 檔案並設定主機名:
sudo vi /etc/hosts
在 主機 檔案中,更新 localhost 位址。 在下列範例中:
- aaddscontoso.com 是您管理式網域的 DNS 網域名稱。
- ubuntu 是您加入受控網域的 Ubuntu VM 主機名。
請用您自己的值來更新這些名稱:
127.0.0.1 ubuntu.aaddscontoso.com ubuntu
完成後,請使用編輯器的 :wq
命令,儲存並結束 主機 檔案。
安裝必要的套件
VM 需要一些額外的套件,才能將 VM 加入受控網域。 若要安裝和設定這些套件,請使用 apt-get
更新並安裝加入網域的工具
在 Kerberos 安裝期間,krb5-user 套件會在 ALL UPPERCASE 中提示功能變數名稱。 例如,如果受控網域的名稱是 aaddscontoso.com,請輸入 AADDSCONTOSO.COM 作為領域。 安裝會在 /etc/krb5.conf 組態檔的 /etc/etc/krb5.conf
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 的日期和時間必須與受控網域同步。 將受控網域的 NTP 主機名新增至 /etc/ntp.conf 檔案。
使用編輯器開啟 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中的群組。同樣地,受控域名必須以全部大寫輸入。 在下列範例中,名為
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 的網路安全群組允許 Kerberos 流量通過 TCP 和 UDP 埠 464 向受控網域的虛擬網路子網進行輸出。
如果您收到錯誤 未指定的 GSS 失敗。次要代碼可能會提供詳細資訊(在 Kerberos 資料庫中找不到伺服器),開啟檔案 /etc/krb5.conf,然後在 [libdefaults]
區段中新增下列程式代碼,然後再試一次:
rdns=false
更新 SSSD 設定
在上一個步驟中安裝的其中一個套件是針對系統安全性服務精靈 (SSSD)。 當用戶嘗試使用網域認證登入 VM 時,SSSD 會將要求轉接至驗證提供者。 在此案例中,SSSD 會使用網域服務來驗證要求。
使用編輯器開啟 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 組態以允許密碼型驗證,如下所示。
注意
Ubuntu 市集映射通常會在 /etc/ssh/sshd_config.d 底下設定幾個組態選項,包括 50-cloud-init.conf 檔案中的 PasswordAuthentication,因此請確定您也會更新該檔案,以避免使用下列步驟覆寫該檔案。
使用編輯器開啟 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
命令,儲存並結束 一般會話 檔案。
授與 『AAD DC Administrators』 群組 sudo 許可權
若要授予 Ubuntu VM 上 AAD DC 系統管理員 群組成員系統管理許可權,請將條目新增至 /etc/sudoers。 新增之後,AAD DC 系統管理員 群組的成員可以使用 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 連線到受控網域或使用網域帳戶登入時遇到問題,請參閱 針對網域加入問題進行疑難解答。