将 CentOS EC2 添加到 Windows AD 时出现问题

将 CentOS EC2 添加到 Windows AD 时出现问题

我正在尝试将我的 CentOS EC2 机器添加到 Windows AD。我的 Windows Active Directory 在另一个帐户的 EC2 实例上配置。有两个 AD 实例(多可用区)已配置,并且复制等由服务器上的 AD 管理员配置。他为我创建了一个用户并与我共享了凭据。我已根据AWS 文档将 CentOS EC2 机器添加到 Windows AD。

不过,我还是列出了我在服务器上执行的步骤。

  • sudo yum -y update
  • cat /etc/hostname输出 :ip-1-7-2-6.xyz.local
  • sudo yum -y install sssd realmd krb5-workstation samba-common-tools
  • sudo realm join -U [email protected] XYZ.local --verbose
    上述命令给了我错误:
    * Resolving: _ldap._tcp.xyz.local
    * Resolving: xyz.local
    * No results: xyz.local
    realm: No such realm found

所以我在sudo vi /etc/hosts按照关联。 主持人 以上两个 IP 属于我的 AD 服务器

/etc/resolv.conf我还做了如下 更改:在此处输入图片描述

然后我使用该sudo realm discover XYZ.local命令来检查是否realm能够发现该域:

在此处输入图片描述

我可以看到详细信息。此后,当我再次尝试加入域时,出现了以下错误:

realm: Couldn't join realm: Necessary packages are not installed: oddjob, oddjob-mkhomedir, sssd, adcli

所以我也安装了上述软件包。我再次尝试,这次错误变为:

Error :
! Couldn't get kerberos ticket for: [email protected]: Cannot find KDC for realm "XYZ.local"
adcli: couldn't connect to XYZ.local domain: Couldn't get kerberos ticket for: [email protected]: Cannot find KDC for realm "XYZ.local"
 ! Failed to join the domain
realm: Couldn't join realm: Failed to join the domain

我找到了解决上述问题的方法link 并再次执行该命令。这次成功了。输出如下: 在此处输入图片描述

输出realm list

在此处输入图片描述

我尝试使用id命令来验证用户的 uid 和 gid id user-shivkumar,但是失败并显示消息no such user

我仍然继续按照 AWS 文档完成所有步骤,然后进行交叉检查。
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
sudo systemctl restart sshd.service
sudo service sshd restart
sudo visudo
## Add the "AWS Delegated Administrators" group from the example.com domain. %AWS\ Delegated\ [email protected] ALL=(ALL:ALL) ALL

以下是我的/etc/sssd/sssd.conf
在此处输入图片描述

我仍然无法使用 AD 凭证访问 EC2 实例。它说Access Denied

我不明白还需要进行哪些其他配置?

答案1

每次我尝试的时候,这总是很痛苦!我最终挖出了RedHat 页面因为它们通常是最准确的信息。

仅仅因为您运行了该realm命令,并不意味着 PAM 已正确设置以使用 AD 作为身份源来识别用户。我相信运行该realm join命令后还有更多工作要做。

我认为你需要研究如何sssd使用这些页面?

我有时使用 也会有更好(更容易)的运气adcli

答案2

最后,我终于能够将我的 CentOS EC2 机器添加到 Windows AD 中。根本原因是时区。我的 CentOS 机器时区是 UTC,而 AD 服务器时区是 IST。不幸的是,我参考的所有博客都没有从一开始就提供详细的步骤。

为了完成答案,我将发布我在我的机器上执行的所有步骤。

  • sudo yum -y update更新软件包和系统
  • ping X.X.X.X这是检查您是否可以访问 AD 服务器的一个非常重要的步骤。我已ping在两台服务器上执行了此操作,以检查它们是否可访问
  • sudo timedatectl set-timezone Asia/Kolkata正如我上面提到的,这是我遇到的根本原因,即时区。确保您的机器和 AD 机器上的时区相同。
  • date检查当前时间并验证上述命令是否执行成功
  • sudo yum -y install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python安装必要的软件包realm
  • 按如下方式编辑/etc/hosts文件(替换您的 AD 服务器 IP):
    sudo vi /etc/hosts
    X.X.X.X xyz.local MYAD
    X.X.X.X xyz.local MYAD
  • cat /etc/hosts重新检查主机条目
  • 按如下方式编辑/etc/resolv.conf文件(替换您的 AD IP):注释掉现有nameserver条目并添加以下条目(替换您的 AD 服务器 IP)
    nameserver X.X.X.X
    nameserver X.X.X.X
  • nslookup xyz.local测试域控制器的名称解析。身份验证服务依赖 DNS(域命名服务)来定位密钥分发中心 (KDC),该中心在 AD 中是域控制器,因此如果您的 DNS 未为您的域正确配置,它将失败。

如果以上步骤一切正确,您应该能够看到输出nslookup。您几乎可以将机器添加到 AD 中了。

  • kinit -V [email protected]测试登录域。通常,如果您是域管理员组的成员,那么应该没问题。如果不是,请要求 AD 管理员授予您将计算机加入域的权限。在我的情况下,user-shivkumar具有将计算机加入域的权限。执行此命令后,它会要求您输入密码。如果一切正常,您应该能够看到Authenticated to Kerberos v5消息,否则它将不显示任何消息并返回到终端。这意味着您的域凭据可用于登录。如果 DNS 配置不正确或无法解析,或者与 ADC 的网络连接中断,则此步骤将失败。您可能会看到一些消息,例如 kinit: Cannot find KDC for realm "XYZ.LOCAL" while getting initial credentials。错误的另一个原因可能是用户名不正确。此外,请注意域名。它是大写的。该kinit命令因用户身份验证而失败,因为 Kerberos 区分大小写。以下是正确的语法kinit [email protected]. 确保域名全部大写,否则将出现错误。
  • sudo realm join -U [email protected] xyz.local --verbose将机器添加到域。如果一切正确,您将看到消息Successfully enrolled machine in realm
  • sudo realm list此命令将帮助您验证服务器是否已加入 Windows 域
  • id [email protected]id命令(在 Linux 上),我们可以验证用户的 uid 和 gid 及其组信息。此时,我们的服务器现在是 Windows 域的一部分。使用id命令来验证 AD 用户的详细信息。一旦您获得命令的输出id,则意味着一切都已正确配置。

现在最后一件事,设置 SSH 服务以允许密码验证。

  • sudo vi /etc/ssh/sshd_config打开此文件即可启用密码验证
  • PasswordAuthentication yesPasswordAuthentication设置设为是。
  • sudo systemctl restart sshd.service重新启动 SSH 服务。您也可以使用备用命令
  • sudo service sshd restart重新启动 SSH 服务。

现在,理想情况下,您应该能够使用域凭据登录计算机。就我而言,我可以使用[email protected]凭据登录。

希望这能对某些人有所帮助。
祝您学习愉快。

参考:

相关内容