使用此链接,我已经设置了一个正确加入 Active Directory 服务器的服务器,但是由于某种原因,我无法使用我在笔记本电脑上创建的几个测试用户的 Kerberos 票证对该服务器进行身份验证。
我本地笔记本电脑上的所有用户都具有相同的 .ssh/config,并且都使用相同的 /etc/krb5.conf;所有用户也都能够通过使用 kinit 从 AD 成功获取有效票证。但是,当我尝试 ssh 到上述已加入 AD 的服务器时,问题出现了。
当我尝试使用自己的帐户“parkel”登录时,它会要求我输入密码,我输入 AD 密码,然后我通过身份验证登录服务器,第一次登录时,我的主目录已正确创建,我被分配到 AD 中 gidNumber 中设置的组;一切似乎都正常。我测试了更改 AD 中的 gidNumber,重新登录后所有更改都立即生效。一切似乎都正常。
问题就是从那时开始的;在看到成功之后,我在 AD 中创建了两个测试帐户,即之前运行的 AD 帐户的副本,即“test1”和“test2”。我在笔记本电脑上更改为该帐户,执行 kinit 并获取了一张票。但是,当我尝试登录服务器时,它只会尝试使用密码进行身份验证,日志中从未提及它正在尝试使用 pam_sss 进行身份验证,因为本地用户不存在,这将彻底失败。
我已经查看了比我愿意承认的更多的谷歌搜索和文档,但我真的很茫然;我很确定我忽略了一些愚蠢的小细节,但我真的找不到我错在哪里。
其中包括来自服务器上的 sshd 日志以及服务器和客户端上的 krb5.conf 的一些输出。
SSHD 输出
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: Authorized to parkel, krb5 principal [email protected] (ssh_gssapi_krb5_cmdok)
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: Accepted gssapi-with-mic for parkel from 192.168.100.2 port 56752 ssh2
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Created slice user-2001.slice.
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Starting Session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Started Session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan systemd-logind[776]: New session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: pam_unix(sshd:session): session opened for user parkel by (uid=0)
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: input_userauth_request: invalid user test1 [preauth]
KRB5.conf 服务器
[libdefaults]
default_realm = VS.LAN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
[realms]
VS.LAN = {
kdc = ad01-test.vs.lan:88
admin_server = ad01-test.vs.lan:749
default_domain = vs.lan
}
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36h
renew_lifetime = 36h
forwardable = true
krb4_convert = false
}
[logging]
default = FILE:/var/log/krb5/kdc.log
kdc = FILE:/var/log/krb5/kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
KRB5.conf 客户端
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = false
rdns = false
default_realm = VS.LAN
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
VS.LAN = {
kdc = 172.19.254.5
}
[domain_realm]
.vs.local = VS.LAN
vs.local = VS.LAN
SSSD.conf 服务器
[sssd]
domains = vs.lan
services = nss, pam, pac
config_file_version = 2
[nss]
[pam]
[pac]
[domain/vs.lan]
## Comment out if you want offline logins
# cache_credentials = true
ldap_id_mapping = False
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
ldap_schema = ad
dyndns_update = true
dyndns_refresh_interval = 43200
dyndns_update_ptr = true
dyndns_ttl = 3600
ad_server = ad01-test.vs.lan
答案1
作为将来的参考,此日志行是关键:
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2
它告诉您 ssh 甚至可以找到用户,因此调试的下一步应该是启用 sssd 日志并查看为什么getent passwd test1
不工作。
很高兴 sssd 现在能为您服务!
答案2
我最终通过在 AD 中为用户“test1”设置正确的值 uidNumber、gidNumber、homeDirectory 和 loginShell 解决了我的问题;显然,当我复制我的工作用户时,这些值并没有与所有其他信息一起复制。