将 SUSE Linux Enterprise 虚拟机加入 Microsoft Entra 域服务托管域

若要让用户使用一组凭据登录到 Azure 中的虚拟机 (VM),可以将 VM 加入到 Microsoft Entra 域服务托管域。 将 VM 加入到域服务托管域时,可以使用域中的用户帐户和凭据来登录和管理服务器。 托管域中的组成员身份也应用于控制对 VM 上的文件或服务的访问。

本文介绍了如何将 SUSE Linux Enterprise (SLE) VM 加入到托管域。

先决条件

需有以下资源和特权才能完成本教程:

创建和连接 SLE Linux VM

如果 Azure 中有现有的 SLE Linux VM,请使用 SSH 连接到该 VM,然后继续执行下一步,开始配置 VM

如果需要创建 SLE Linux VM,或者想要创建用于本文的测试 VM,可以使用以下方法之一:

创建 VM 时,请注意虚拟网络设置,确保 VM 可以与托管域通信:

  • 将该 VM 部署到已启用 Microsoft Entra 域服务的虚拟网络或对等互连的虚拟网络。
  • 将 VM 部署到与 Microsoft Entra 域服务托管域不同的子网中。

部署 VM 后,请遵循使用 SSH 连接到 VM 的步骤。

配置主机文件

若要确保为托管域正确配置了 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”选项卡,然后将托管域的 IP 地址输入到“名称服务器 1”文本框中。 这些 IP 地址显示在 Microsoft Entra 管理中心的你的托管域的“属性”窗口中,例如 10.0.2.4 和 10.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. 在对话框中,指定属于托管域的某个用户的用户名和密码。 必要时将用户帐户添加到 Microsoft Entra ID 中的组

    若要确保为 Samba 启用当前域,请激活“覆盖 Samba 配置以使用此 AD”。

  7. 若要注册,请选择“确定”。

  8. 此时会显示一条消息,确认你已成功注册。 若要完成此操作,请选择“确定”。

在托管域中注册 VM 后,使用“管理域用户登录”配置客户端,如以下示例屏幕截图所示:

Example screenshot of the Manage Domain User Logon window in YaST

  1. 若要允许使用托管域提供的数据进行登录,请选中“允许域用户登录”复选框。

  2. (可选)在“启用域数据源”下,根据需要为你的环境选中其他数据源。 这些选项包括哪些用户可以使用 sudo 或哪些网络驱动器可用。

  3. 若要允许托管域中的用户在 VM 上具有主目录,请选中“创建主目录”复选框。

  4. 从侧栏中选择“服务选项”›“Name 开关”,然后选择“扩展选项”。 从该窗口中选择 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 文件服务器),则应在 smb.conf 中将 Samba 选项“kerberos method”设置为“secrets and keytab”。 还应在 sssd.conf 中将 SSSD 选项 ad_update_samba_machine_account_password 设置为 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 地址显示在 Microsoft Entra 管理中心的你的托管域的“属性”窗口中,例如 10.0.2.4 和 10.0.2.5。

  8. 在系统提示时选择“确定”以确认加入域。

  9. 提供托管域中某个管理员的密码,然后选择“确定”。

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

加入托管域后,可以使用桌面的显示管理器或控制台从工作站登录到该托管域。

使用 Winbind 从 YaST 命令行界面将 VM 加入托管域

若要使用 winbind 和 YaST 命令行界面来加入托管域,请执行以下代码:

  • 加入域:

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

从终端使用 Winbind 将 VM 加入托管域

若要使用 winbind 和 samba 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. 检查 Microsoft Entra ID 和 Linux 中的日期和时间是否同步。可以通过将 Microsoft Entra 服务器添加到 NTP 服务来实现此目的:

    1. 将以下行添加到 /etc/ntp.conf

      server aaddscontoso.com
      
    2. 重启 NTP 服务:

      sudo systemctl restart ntpd
      
  4. 加入域:

    sudo net ads join -U Administrator%Mypassword
    
  5. 在 Linux 可插入身份验证模块 (PAM) 中启用 winbind 作为登录源:

    config pam-config --add --winbind
    
  6. 启用自动创建主目录功能,以便用户可以登录:

    sudo 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 的行更新为 yes :

    PasswordAuthentication yes
    

    完成后,使用编辑器的 :wq 命令保存并退出 sshd_conf 文件。

  3. 若要应用更改并让用户使用密码登录,请重新启动 SSH 服务:

    sudo systemctl restart sshd
    

为“AAD DC 管理员”组授予 sudo 特权

若要授予“AAD DC 管理员”组成员对 SLE VM 的管理特权,请向“/etc/sudoers”添加一个条目 。 添加后,“AAD DC 管理员”组的成员可以使用 SLE VM 上的 sudo 命令。

  1. 打开 sudoers 文件进行编辑:

    sudo visudo
    
  2. 将以下条目添加到“/etc/sudoers”文件的末尾。 “AAD DC 管理员”组的名称中包含空格,因此请在组名称中包含反斜杠转义符。 添加自己的域名,例如 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”)。

    sudo ssh -l contosoadmin@AADDSCONTOSO.com linux-q2gr.aaddscontoso.com
    
  2. 成功连接到 VM 后,验证是否已正确初始化主目录:

    sudo pwd
    

    你应位于“/home”目录中,并具有你自己的与用户帐户相匹配的目录。

  3. 现在请检查是否已正确解析组成员身份:

    sudo id
    

    应会看到托管域中的组成员身份。

  4. 如果以“AAD DC 管理员”组成员的身份登录到 VM,请检查是否可以正确使用 sudo 命令:

    sudo zypper update
    

后续步骤

如果在将 VM 连接到托管域或使用域帐户登录时遇到问题,请参阅域加入问题故障排除