全新安装和更新升级后,我已遵循本指南将机器添加到我们的 AD 基础架构中,但在基本配置realm join -v [domain]
返回后
! Can't contact LDAP server
realm: No such realm found
因此,我启动了一个 CentOS 最小 VM,并能够通过它注册机器。交叉引用这两个输出,我注意到在 Ubuntu 上,相同的realm
命令在查找 LDAP 服务器时查询了错误的 IP,但我没有找到有关如何在配置文件中或通过 更改该参数的任何信息man realm
。
因此我尝试ldapsearch -h [server IP]
手动指定服务器并返回以下内容:
ldap_sasl_interactive_bind_s: Local error (-2)
additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_0))
这应该不是问题,因为 CentOS VM 给出了相同的结果,尽管它已成功加入。因此,我从 CentOS 机器复制了 krb5.conf、sssd.conf 和 realmd.conf 的配置文件(备份后),但给出了相同的原始错误。
我认为错误的 LDAP DSE 查找是问题所在,但我无法在任何地方找到要更改的参数。
谢谢你的帮助。
AD服务器运行Windows Server 2016。提供以下.conf文件:
krb5配置文件
[libdefaults]
default_realm = MYDOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc = true
forwardable = true
rdns = false
[realms]
MYDOMAIN.COM = {
kdc = server.mydomain.com
admin_server = server.mydomain.com
default_domain = mydomain.com
}
[domain_realm]
.mydomain.com = MYDOMAIN.COM
mydomain.com = MYDOMAIN.COM
sssd.conf
[sssd]
services = nss, pam
domains = mydomain.com
config_file_version = 2
[domain/mydomain.com]
id_provider = ad
access_provider = ad
ad_domain = mydomain.com
krb5_realm = MYDOMAIN.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%d/%u
领域配置配置文件
[users]
default-home = /home/%D/%U
default-shell = /bin/bash
[active-directory]
default-client = sssd
os-name = Ubuntu
os-version = 18.04
[service]
automatic-install = no
[mydomain.com]
fully-qualified-names = yes
automatic-id-mapping = no
user-principal = yes
manage-system = yes
答案1
提供我自己的解决方案作为完整指南。
免责声明:我整理了此网站上的不同答案,并添加了自己的观点。我还在整个指南中假定了 su 权限。
使用 Ubuntu 18.04 加入 AD 网络
0)确保/etc/hosts
文件/etc/hostname
包含符合域管理员提供的凭据的地址和名称。还要安装以下软件包:
$ apt install -y realmd sssd sssd-tools libnss-sss libpam-sss krb5-user adcli samba-common-bin
笔记:当您安装 kerberos 时,系统会提示您输入领域和域名。请按要求操作,但如果您不知道某些信息,请留空。
1)禁用 systemd-resolved
$ systemctl disable systemd-resolved.service
$ systemctl stop systemd-resolved
笔记:这是我找到的方法,但对于您来说禁用 systemd-resolved 可能并不理想。
2)/etc/NetworkManager/NetworkManager.conf
在该部分中添加以下内容[main]
:
dns=default
3)删除符号链接/etc/resolv.conf
。它将使用正确的值重新创建。
4)重新启动网络服务并添加 dnsmasq 包:
$ service network-manager restart
$ apt install dnsmasq
5)用/etc/nsswitch.conf
以下内容替换主机行:
hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4
笔记:如果您遇到问题,请尝试此行hosts: files dns myhostname
。
6)将以下内容添加到/etc/krb5.conf
。它区分大小写,因此请小心。同时删除其他所有内容(首先备份默认内容$ cp /etc/krb5.conf /etc/krb5.conf.bak
)。如果某个部分不存在,请自行添加:
[libdefaults]
default_realm = YOUR.REALM.NAME
dns_lookup_realm = false
dns_lookup_kdc = false
default_ccache_name = KEYRING:persistent:%{uid}
rdns = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
YOUR.REALM.NAME = {
kdc = your.realm.name
admin_server = your.realm.name
}
[domain_realm]
your.realm.name = YOUR.REALM.NAME
.your.realm.name = YOUR.REALM.NAME
笔记:强制关闭查找,对调试有很大帮助,而且我发现它对于查看正在发生的事情非常有用,这与该主题的所有其他指南基本相反。此外,反向 DNS 行可能仅与我的网络设置相关,因此如果出现问题,rnds
请尝试使用值。true
7)勾选/etc/sssd/sssd.conf
以包含以下内容。从第 6 点开始适用相同的准则和限制。某些值可能已设置:
[sssd]
domains = your.realm.name
config_file_version = 2
services = nss, pam
[domain/your.domain.name]
ad_domain = your.domain.name
krb5_realm = YOUR.DOMAIN.NAME
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad
8)重启
9)加入您的域 (需要管理员凭据。系统将要求您输入管理员密码):
$ realm join -v --user=[admin_username] your.realm.name
笔记:详细标签-v
对于查看可能出现的问题至关重要。此时,如果您确实通过了发现步骤(始终是命令的第一步join
),如果发生某些事情,您将会有一些非常详细的错误可供跟踪,最糟糕的情况应该已经过去了。
祝你好运!
答案2
很高兴您分享!我最初也遇到了同样的问题:
realm: No such realm found:
我遵循了以下指南:
- https://computingforgeeks.com/join-ubuntu-debian-to-active-directory-ad-domain/
- https://www.server-world.info/en/note?os=Ubuntu_18.04&p=realmd
我的问题通过两个较小的措施得到了解决:
安装生成的新的 netplan 设置文件如下所示:
cat /etc/netplan/50-cloud-init.yaml:
就像是这样的:
network: ethernets: enp0s4: addresses: - 192.168.1.8/24 gateway4: 192.168.1.3 nameservers: addresses: - 192.168.1.252 - 192.168.1.253 - 192.168.1.3 - 1.1.1.1 search: - domain.loc version: 2
当我换到旧的经过验证的设置结构时,它看起来像这样:
network: ethernets: enp0s4: dhcp4: no addresses: [192.168.1.8/24] gateway4: 192.168.1.3 nameservers: addresses: [192.168.1.252,192.168.1.253,192.168.1.3,1.1.1.1] version: 2
后一个例子是我让它发挥作用所需要的。
禁用 IPv6 -(也许这不是导致最初问题的原因,但我在尝试 netplan 解决方案之前已禁用它,因此我已经对其进行了调整,因此我想分享它。)
我更改了这两行
/etc/default/grub
并添加ipv6.disable=1
:GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1" GRUB_CMDLINE_LINUX="ipv6.disable=1"
然后跑了
update-grub
。
答案3
我有两台机器都运行 Kubuntu,还有一台运行 Samba 4 AD 服务器的 Nethserver(CentOS)服务器。
其中一台客户端机器比较旧,已经更新过多次。另一台客户端机器上安装了 Kubuntu 19.10。
由于某种原因,域登录在旧机器上停止工作。我一直在检查两台机器的配置,看看它们有什么不同。
新机器没有 krb5.conf 或 realmd.conf。旧机器有。不知何故,在 sssd.conf 文件中,有一行
ldap_id_mapping = True
已更改为 false。
我删除了两个配置文件,并将 ldap_id_mapping 值改回 True,一切似乎都恢复正常了。如果您遇到问题,也许可以删除这些文件并尝试使用默认设置。至少可以缩小问题根源的范围。