若要在 Ubuntu/Debian 桌面平台上支援 True SSO,請使用 Samba 和 Winbind 解決方案整合基礎虛擬機器 (VM) 與 Active Directory (AD) 網域。

若要將 Ubuntu/Debian 虛擬機器與 AD 網域整合,請使用下列程序。

此程序中的某些範例使用預留位置值來代表您網路組態中的實體,例如,您虛擬機器的主機名稱。請將預留位置值取代為您的組態特有的資訊,如下表所說明。

預留位置值 說明
dns_IP_ADDRESS DNS 名稱伺服器的 IP 位址
mydomain.com AD 網域的 DNS 名稱
MYDOMAIN.COM AD 網域的 DNS 名稱 (全部使用大寫字母)
myhost Ubuntu/Debian 虛擬機器的主機名稱
MYDOMAIN 包含 Samba 伺服器的工作群組或 NT 網域的 DNS 名稱 (全部使用大寫字母)
ads-hostname AD 伺服器的主機名稱
admin-user AD 網域管理員的使用者名稱

必要條件

請確認:
  • 在虛擬機器上,AD 伺服器可由 DNS 解析。
  • 網路時間通訊協定 (NTP) 會設定於虛擬機器上。

程序

  1. 在 Ubuntu/Debian 虛擬機器上,安裝 sambawinbind 套件。
    sudo apt install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind
  2. 設定 Kerberos 驗證設定。
    1. 如果系統上未顯示 Kerberos 驗證設定的視窗,請執行下列命令以顯示該視窗。
      sudo dpkg-reconfigure krb5-config
    2. 針對預設的 Kerberos 第 5 版領域,請輸入您 AD 網域的 DNS 名稱 (全部使用大寫字母)。
      例如,如果您的 AD 網域名稱為 mydomain.com,請輸入 MYDOMAIN.COM
    3. 針對您領域的 Kerberos 伺服器,請輸入您 AD 伺服器的主機名稱 (在這整個程序的各個範例中均顯示為 ads_hostname)。
    4. 針對您 Kerberos 領域的管理伺服器,再次輸入您 AD 伺服器的主機名稱。
  3. 更新 PAM 組態。
    1. 開啟 PAM 組態頁面。
      pam-auth-update
    2. 選取在登入時建立主目錄,然後選取確定
  4. 編輯 /etc/nsswitch.conf 組態檔,如下列範例所示。
    passwd: compat winbind
    group: compat winbind
    shadow: compat
    gshadow: files
  5. (選擇性) 如果系統自動偵測到正確的 DNS 伺服器,請略過此步驟並繼續進行下一個步驟。如果系統無法偵測到正確的 DNS 伺服器,請完成此步驟以手動設定 DNS 伺服器。
    若要確保自動產生的 resolv.conf 檔案會以您的 AD 網域作為搜尋網域,請編輯系統連線的 NetworkManager 設定。下列子步驟提供 Ubuntu 20.04 系統的範例指示。
    1. 開啟 NetworkManager 控制台,並導覽至系統連線的 IPv4 設定。針對 [方法],選取僅限自動 (DHCP) 位址。在 DNS 伺服器文字方塊中,輸入您 DNS 名稱伺服器的 IP 位址 (在這整個程序的各個範例中均顯示為 dns_IP_ADDRESS)。然後,按一下儲存
    2. 編輯 /etc/dhcp/dhclient.conf 檔案,如下列範例所示。
      supersede domain-name "mydomain.com";
      prepend domain-name-servers dns_IP_ADDRESS;
    3. 編輯 /etc/systemd/resolved.conf 檔案,如下列範例所示。
      DNS=dns_IP_ADDRESS
      Domains="mydomain.com"
      備註: 在建立新的即時複製虛擬桌面平台時,會新增新的虛擬網路介面卡。將網路介面卡新增至所複製的虛擬桌面平台時,虛擬桌面平台範本會清除網路介面卡 (例如 DNS 伺服器) 的設定。若要在新增網路介面卡時保留 DNS 伺服器設定,您必須為虛擬機器指定 DNS 伺服器。
    4. 編輯 /etc/resolv.conf 組態檔以指定 DNS 伺服器,如下列範例所示。如果出現警告,您可以忽略警告,並繼續進行變更。
      nameserver dns_IP_ADDRESS
      
      search mydomain.com
    5. 重新啟動虛擬機器,並重新登入。
  6. 編輯 /etc/hosts 組態檔,如下列範例所示。
    127.0.0.1     localhost
    127.0.1.1     myhost.mydomain.com myhost
  7. 編輯 /etc/samba/smb.conf 組態檔,如下列範例所示。
    [global]
    security = ads
    realm = MYDOMAIN.COM
    workgroup = MYDOMAIN
    idmap uid = 10000-20000
    idmap gid = 10000-20000
    winbind enum users = yes
    winbind enum groups = yes
    template homedir = /home/%D/%U
    template shell = /bin/bash
    client use spnego = yes
    client ntlmv2 auth = yes
    encrypt passwords = yes
    winbind use default domain = yes
    restrict anonymous = 2
    kerberos method = secrets and keytab
    winbind refresh tickets = true
  8. 重新啟動 smbd 服務。
    sudo systemctl restart smbd.service
  9. 編輯 /etc/krb5.conf 組態檔,使其具有類似下列範例的內容。
    [libdefaults]
          default_realm = MYDOMAIN.COM
          dns_lookup_realm = true
          dns_lookup_kdc = true
    
    [realms]
          MYDOMAIN.COM = {
                kdc = ads-hostname
                admin_server = ads-hostname 
          }
    
    [domain_realm]
          .mydomain.com = MYDOMAIN.COM
          mydomain.com = MYDOMAIN.COM
    
  10. 將 Ubuntu/Debian 虛擬機器加入 AD 網域。
    1. 起始 Kerberos 票證。
       sudo kinit admin-user
      出現提示時,輸入您的管理員密碼。
    2. 確認票證已成功建立。
      sudo klist
      此命令會傳回票證的相關資訊,包括其有效起始時間和到期時間。
    3. 建立 Kerberos Keytab 檔案。
      sudo net ads keytab create -U admin-user
    4. 加入 AD 網域。
      sudo net ads join -U admin-user
  11. 重新啟動並確認 Winbind 服務。
    1. 重新啟動 Winbind 服務。
      sudo systemctl restart winbind.service 
    2. 若要確認 Winbind 服務,請執行下列命令,並確認命令傳回正確的輸出。
      • sudo wbinfo -u
      • sudo wbinfo -g
      • sudo getent passwd
      • sudo getent group
  12. 重新啟動虛擬機器,並重新登入。

下一步

在 Ubuntu/Debian 桌面平台上設定 True SSO