这让我发疯。我正在尝试设置一个集成了 AD 的 Ubuntu 16.04 服务器,以便在通过 SSH 登录时接受 Kerberos 票证。我有一个 CentOS 7 服务器,在加入 AD 域后可以毫无问题地接受票证,但我在 Ubuntu 服务器上的配置并不正确。
这是设置:
- Windows 2012 AD 域 (realdomain.tld)
- Fedora 25 工作站 (wksf25.realdomain.tld)
- CentOS 7 服务器 (sc7.realdomain.tld)
- Ubuntu 16.04 服务器 (su16.realdomain.tld)
一切都通过领域加入了 AD,并且没有问题。一切都可以在登录或通过 kinit 时获得 Kerberos 票证。从 wksf25 到 sc7 的 SSH 工作正常,我可以使用登录 wkfs25 时获得的 kerberos 票证通过 SSH 登录。
以下是 Ubuntu 的设置步骤:
安装软件包:
apt install realmd oddjob oddjob-mkhomedir sssd sssd-tools adcli samba-common krb5-user chrony packagekit libpam-krb5
- 编辑
chrony.conf
以使用 AD DC。 设置realmd.conf:
vim /etc/realmd.conf
[users] default-home = /home/%D/%U [realdomain.tld] fully-qualified-names = no manage-system = no automatic-id-mapping = yes
加入域:
realm join -vU domainuser realdomain.tld
- 允许登录:
realm permit -R realdomain.tld -g linuxadmins
特定于 Ubuntu - 设置 pam 以在登录时创建主目录:`vim /etc/pam.d/common-session'
session optional pam_mkhomedir.so umask=0077
特定于 Ubuntu - 在 OpenSSH 中启用 GSSAPI 身份验证:
vim /etc/ssh/sshd_config
GSSAPIAuthentiction yes GSSAPICleanupCredentials no
使用域帐户登录并确保一切正常。此时一切正常,减去通过 Ubuntu 服务器上的 Kerberos 票证进行的无密码 SSH 登录。
这是我从中得到的realm list
:
realdomain.tld
type: kerberos
realm-name: REALDOMAIN.TLD
domain-name: realdomain.tld
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
login-formats: %U
login-policy: allow-permitted-logins
permitted-logins:
permitted-groups: linuxusers
sssd.conf:
[sssd]
domains = realdomain.tld
config_file_version = 2
services = nss, pam
[domain/realdomain.tld]
ad_domain = realdomain.tld
krb5_realm = REALDOAMIN.TLD
realmd_tags = 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 = False
fallback_homedir = /home/%d/%u
access_provider = simple
simple_allow_groups = linuxusers
krb5.conf:
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_ccache_name = KEYRING:persistent:%{uid}
default_realm = REALDOMAIN.TLD
[realms]
REALDOMAIN.TLD = {
}
[domain_realm]
realdomain.org = REALDOMAIN.TLD
.realdomain.org = REALDOMAIN.TLD
我错过了什么?
固定的。
realm join -vU domainuser --membership-software=samba --client-software=sssd realdomain.tld
加入 Ubuntu 上的 AD 域,而不是让realm
使用默认值。SSSD 配置有一点我认为不相关的差异,但事实证明确实如此。
Ubuntu:
realmd_tags = joined-with-adcli
中央操作系统:
realmd_tags = joined-with-samba
为了从不同的角度来看待这个问题,我启动了一个 OpenSUSE VM 并开始研究 SUSE 如何进行 AD 集成。当我在弄清楚 SUSE 是如何做事的时候,我遇到了一篇文章,它建议应该使用 Samba 加入 Windows Server 2012+ AD 而不是
adcli
. 1将其添加到上述配置的差异中,这就是发生了什么的线索。离开域并使用更新的
realm
命令重新加入解决了该问题,并且在最后一天一切都稳定了。对于这两种方法之间的差异,我没有确切的根本原因,但这需要更多的研究,并且是另一天的斗争。
在添加 SSL 证书以支持 LDAPS 的同时,我们遇到了类似的情况(尽管我从未恢复该更改以确定它是否是因果关系)。我不确定是否有任何理由更喜欢,但我发现两个选项在仍在使用时已
adcli
修复(在 Ubuntu 14.04 和 16.04 上):realm join
adcli
解决方案 1(Ubuntu 16.04 或 14.04)
将两个设置添加到我们的
krb5.conf
(都没有帮助):解决方案 2(仅限 Ubuntu 14.04)
我随后偶然发现了这个git 问题,该问题提出了另一个选项(单独)在 14.04 上也为我们工作:
FWIW
我们实际上完全控制了我们的 DNS,并且无法在我们现有的记录中发现任何问题 - 或任何消除对这些需求的更改。