我正在尝试将我的 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 服务器
然后我使用该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
我仍然无法使用 AD 凭证访问 EC2 实例。它说Access Denied
。
我不明白还需要进行哪些其他配置?
答案1
答案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 yes
将PasswordAuthentication
设置设为是。sudo systemctl restart sshd.service
重新启动 SSH 服务。您也可以使用备用命令sudo service sshd restart
重新启动 SSH 服务。
现在,理想情况下,您应该能够使用域凭据登录计算机。就我而言,我可以使用[email protected]
凭据登录。
希望这能对某些人有所帮助。
祝您学习愉快。
参考:
- https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_linux_instance.html
- https://www.linuxtechi.com/integrate-rhel7-centos7-windows-active-directory/
- https://aws.nz/best-practice/ad-join/
- https://techdirectarchive.com/2020/03/21/cannot-find-kdc-for-realm-while-getting-initial-credentials-kinit-configuration-file-does-not-specify-default-realm/
- https://access.redhat.com/articles/3023951
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/windows_integration_guide/index#sssd-ad-proc
- http://www.techpository.com/linux-kinit-cannot-contact-any-kdc-for-realm-while-getting-initial-credentials/#:~:text=February%209-,Linux%3A%20kinit%3A%20Cannot%20contact%20any%20KDC%20for,realm%20while%20getting%20initial%20credentials&text=There%20is%20probably%20one%20of,not%20resolving%20the%20domain%20controller。
- https://unix.stackexchange.com/questions/464648/sssd-and-active-directory-user-does-not-exist-in-centos