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

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

本文介绍如何将 Red Hat Enterprise Linux (RHEL) VM 加入托管域。

先决条件

若要完成本教程,需要以下资源和权限:

  • 有效的 Azure 订阅。
  • 与您的订阅关联的 Microsoft Entra 租户,可以是与本地目录同步的,也可以是仅限于云端的目录。
  • 在 Microsoft Entra 租户中启用和配置的 Microsoft Entra 域服务托管域。
    • 如果需要,第一篇教程会创建并配置 Microsoft Entra 域服务托管域。
  • 属于托管域的用户帐户。
  • 唯一的 Linux VM 名称必须不超过 15 个字符,以避免可能导致 Active Directory 中冲突的截断名称。

创建并连接到 RHEL Linux VM

如果 Azure 中已有 RHEL Linux VM,请使用 SSH 连接到它,然后继续执行下一步以 开始配置 VM

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

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

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

部署 VM 后,请按照步骤使用 SSH 连接到 VM。

配置 "hosts" 文件

若要确保为托管域正确配置 VM 主机名,请编辑 /etc/hosts 文件并设置主机名:

sudo vi /etc/hosts

主机 文件中,更新 localhost 地址。 在下面的示例中:

  • aaddscontoso.com 是托管域的 DNS 域名。
  • rhel 是您的 RHEL VM 的主机名,它将加入托管域。

使用以下自己的值更新这些名称:

127.0.0.1 rhel rhel.aaddscontoso.com

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

重要

请记住 Red Hat Enterprise Linux 6.X 和 Oracle Linux 6.x 已是 EOL。 RHEL 6.10 提供 ELS 支持该支持于 2024 年 6 月 6 日结束

安装所需程序包

VM 需要一些附加包才能将 VM 加入托管域。 若要安装和配置这些软件包,请更新并安装域加入工具,使用 yum..

sudo yum install adcli sssd authconfig krb5-workstation

将 VM 加入托管域

在 VM 上安装所需的包后,将 VM 加入托管域。

  1. 使用 adcli info 命令发现托管域。 以下示例查找域 AADDSCONTOSO.COM。 请用所有大写字母指定您自己的托管域名:

    sudo adcli info aaddscontoso.com
    

    如果 adcli info 命令找不到托管域,请查看以下故障排除步骤:

    • 确保该域可以从 VM 访问。 请尝试 ping aaddscontoso.com 查看是否返回了正答复。
    • 检查 VM 是否已部署到托管域所在的同一虚拟网络或对等虚拟网络。
    • 确认虚拟网络的 DNS 服务器设置已更新为指向托管域的域控制器。
  2. 首先,使用 adcli join 命令加入域。 此命令还会创建 keytab 以对计算机进行身份验证。 使用属于托管域的用户帐户。

    sudo adcli join aaddscontoso.com -U contosoadmin
    
  3. 现在配置 /ect/krb5.conf 并创建 /etc/sssd/sssd.conf 文件以使用 aaddscontoso.com Active Directory 域。 请确保 AADDSCONTOSO.COM 替换为自己的域名:

    /etc/krb5.conf使用编辑器打开文件:

    sudo vi /etc/krb5.conf
    

    krb5.conf文件更新以匹配以下示例:

    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
     default_realm = AADDSCONTOSO.COM
     dns_lookup_realm = true
     dns_lookup_kdc = true
     ticket_lifetime = 24h
     renew_lifetime = 7d
     forwardable = true
    
    [realms]
     AADDSCONTOSO.COM = {
     kdc = AADDSCONTOSO.COM
     admin_server = AADDSCONTOSO.COM
     }
    
    [domain_realm]
     .AADDSCONTOSO.COM = AADDSCONTOSO.COM
     AADDSCONTOSO.COM = AADDSCONTOSO.COM
    

    创建 /etc/sssd/sssd.conf 文件:

    sudo vi /etc/sssd/sssd.conf
    

    sssd.conf文件更新以匹配以下示例:

    [sssd]
     services = nss, pam, ssh, autofs
     config_file_version = 2
     domains = AADDSCONTOSO.COM
    
    [domain/AADDSCONTOSO.COM]
    
     id_provider = ad
    
  4. 确保 /etc/sssd/sssd.conf 权限为 600,并且由根用户拥有:

    sudo chmod 600 /etc/sssd/sssd.conf
    sudo chown root:root /etc/sssd/sssd.conf
    
  5. 请用 authconfig 让 VM 知道关于 AD Linux 集成的内容。

    sudo authconfig --enablesssd --enablesssd auth --update
    
  6. 启动并启用 sssd 服务:

    sudo service sssd start
    sudo chkconfig sssd on
    

如果您的 VM 无法成功完成域加入过程,请确保 VM 的网络安全组允许 TCP 和 UDP 协议的 464 端口上的出站 Kerberos 流量通过到您托管域的虚拟网络子网。

现在检查是否可以使用 getent 查询用户 AD 信息

sudo getent passwd contosoadmin

允许对 SSH 进行密码身份验证

默认情况下,用户只能使用基于 SSH 公钥的身份验证登录到 VM。 基于密码的身份验证失败。 将 VM 加入托管域时,这些域帐户需要使用基于密码的身份验证。 更新 SSH 配置以允许基于密码的身份验证,如下所示。

  1. 使用编辑器打开 sshd_conf 文件:

    sudo vi /etc/ssh/sshd_config
    
  2. 将 PasswordAuthentication 的行更新为 yes :

    PasswordAuthentication yes
    

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

  3. 若要应用更改并让用户使用密码登录,请重启 RHEL 发行版版本的 SSH 服务:

    sudo service sshd restart
    

为“AAD DC 管理员”组赋予 sudo 权限

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

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

    sudo visudo
    
  2. 将以下条目添加到“/etc/sudoers”文件的末尾。 “AAD DC Administrators”组名中包含空格,因此请在组名称中加上反斜杠转义符。 添加自己的域名,例如 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 的地址,例如 rhel.aaddscontoso.com。 如果使用 Azure Cloud Shell,请使用 VM 的公共 IP 地址,而不是内部 DNS 名称。

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

    pwd
    

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

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

    id
    

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

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

    sudo yum update
    

后续步骤

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