若要让用户使用一组凭据登录到 Azure 中的虚拟机(VM),可以将 VM 加入 Microsoft Entra 域服务托管域。 将 VM 加入域服务托管域时,可以使用域中的用户帐户和凭据登录和管理服务器。 还应用了托管域的组成员身份,以便控制对 VM 上的文件或服务的访问。
本文介绍如何将 CoreOS VM 加入托管域。
先决条件
需有以下资源和特权才能完成本教程:
- 有效的 Azure 订阅。
- 如果你没有 Azure 订阅,请创建一个帐户。
- 与订阅关联的 Microsoft Entra 租户,可以与本地目录或仅限云的目录同步。
- 在 Microsoft Entra 租户中启用和配置Microsoft Entra 域服务托管域。
- 如果需要,第一个教程 将创建并配置 Microsoft Entra 域服务托管域。
- 属于托管域的用户帐户。
- 唯一的 Linux 虚拟机名称最多为 15 个字符,以避免在 Active Directory 中因名称截断而引发冲突。
创建并连接到 CoreOS Linux VM
如果 Azure 中已有 CoreOS Linux VM,请使用 SSH 连接到它,然后继续执行下一步以 开始配置 VM。
如果需要创建 CoreOS Linux VM,或者想要创建用于本文的测试 VM,可以使用以下方法之一:
创建 VM 时,请注意虚拟网络设置,确保 VM 可以与托管域通信:
- 将 VM 部署到相同或对等的启用了 Microsoft Entra 域服务的虚拟网络中。
- 将 VM 部署到与 Microsoft Entra 域服务托管域不同的子网中。
部署 VM 后,请按照步骤使用 SSH 连接到 VM。
配置 hosts 文件
若要确保为托管域正确配置 VM 主机名,请编辑 /etc/hosts 文件并设置主机名:
sudo vi /etc/hosts
在 hosts 文件中,更新 localhost 地址。 在下面的示例中:
- aaddscontoso.com 是托管域的 DNS 域名。
- coreos 是您要加入托管域的 CoreOS VM 的主机名。
使用以下自己的值更新这些名称:
127.0.0.1 coreos coreos.aaddscontoso.com
完成后,使用编辑器的命令保存并退出 :wq 文件。
配置 SSSD 服务
更新 /etc/sssd/sssd.conf SSSD 配置。
sudo vi /etc/sssd/sssd.conf
为以下参数指定自己的托管域名:
- 所有大写中的域
- [domain/AADDSCONTOSO] 其中 AADDSCONTOSO 全大写
- ldap_uri
- ldap_search_base
- krb5_server
- 将krb5_realm全部转换为大写字母
[sssd]
config_file_version = 2
services = nss, pam
domains = AADDSCONTOSO.COM
[domain/AADDSCONTOSO]
id_provider = ad
auth_provider = ad
chpass_provider = ad
ldap_uri = ldap://aaddscontoso.com
ldap_search_base = dc=aaddscontoso,dc=com
ldap_schema = rfc2307bis
ldap_sasl_mech = GSSAPI
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_home_directory = unixHomeDirectory
ldap_user_principal = userPrincipalName
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true
fallback_homedir = /home/%d/%u
krb5_server = aaddscontoso.com
krb5_realm = AADDSCONTOSO.COM
将 VM 加入托管域
更新 SSSD 配置文件后,现在将虚拟机加入托管域。
首先,使用
adcli info命令验证是否可以查看有关托管域的信息。 以下示例获取域 AADDSCONTOSO.COM 的信息。 在所有大写字母中指定自己的托管域名:sudo adcli info AADDSCONTOSO.COMadcli info如果命令找不到托管域,请查看以下故障排除步骤:- 确保域名可被虚拟机访问。 尝试
ping aaddscontoso.com查看是否返回了正答复。 - 检查 VM 是否已部署到托管域所在的同一虚拟网络或对等虚拟网络。
- 确认虚拟网络的 DNS 服务器设置已更新,以指向托管域的域控制器。
- 确保域名可被虚拟机访问。 尝试
现在,使用
adcli join命令将 VM 加入托管域。 指定属于托管域的用户。 如果需要, 请将用户帐户添加到Microsoft Entra ID 中的组。同样,必须以全部大写形式输入托管域名。 在以下示例中,命名
contosoadmin@aaddscontoso.com的帐户用于初始化 Kerberos。 输入您属于管理域的用户帐户。sudo adcli join -D AADDSCONTOSO.COM -U contosoadmin@AADDSCONTOSO.COM -K /etc/krb5.keytab -H coreos.aaddscontoso.com -N coreos当 VM 成功加入托管域时,此命令
adcli join不会返回任何信息。若要应用域加入配置,请启动 SSSD 服务:
sudo systemctl start sssd.service
使用域帐户登录到 VM
若要验证 VM 是否已成功加入托管域,请使用域用户帐户启动新的 SSH 连接。 确认已创建主目录,并应用域中的组成员身份。
从控制台创建新的 SSH 连接。 使用
ssh -l命令使用属于托管域的域帐户,例如contosoadmin@aaddscontoso.com,然后输入 VM 的地址,例如 coreos.aaddscontoso.com。 如果使用 Azure Cloud Shell,请使用 VM 的公共 IP 地址,而不是内部 DNS 名称。ssh -l contosoadmin@AADDSCONTOSO.com coreos.aaddscontoso.com现在检查组成员身份是否已正确解析:
id您应该会看到来自托管域的组成员资格。
后续步骤
如果在将 VM 连接到托管域或使用域帐户登录时遇到问题,请参阅 “域加入故障排除”问题。