这让我发疯。我正在尝试设置一个集成了 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
我错过了什么?