对ADjoin的Centos 7服务器进行身份validation

使用这个链接 ,我已经build立了一个服务器,正确join到Active Directory服务器,但出于某种原因,我无法使用我在笔记本电脑上创build的几个testing用户的Kerberos票证来validation服务器。

本地笔记本电脑上的所有用户都具有相同的.ssh / config,并且全部使用相同的/etc/krb5.conf; 所有的用户也可以通过使用kinit成功地从AD获得有效的票证。 但是,当我尝试SSH到前面提到的连接到AD的服务器时,会出现问题。

当我尝试用我自己的帐户“parkel”login时,它会要求我input密码,然后input我的AD密码,然后通过身份validationlogin服务器,第一次login时,我的homedir已正确我被分配到AD中gidNumber中设置的组中; 在世界上一切似乎都好。 我testing了在AD中更改gidNumber,所有更改都在激活后立即激活。 世界上所有人似乎都还好。

那是什么时候开始的问题。 在看到我的成功之后,我在AD做了两个testing账户,这是我以前工作的AD-account的副本,'test1'和'test2'。 我在我的笔记本电脑上更换了这个账号,做了kinit并拿到了一张票。 但是,当我尝试login到服务器时,它只是尝试使用密码进行身份validation,并且在日志中没有提到使用pam_sss进行身份validation,因为本地用户不存在,这将会失败。

我已经检查了更多的谷歌search和文档比我不愿意承认,但我真的在这里亏本; 我很确定我忽略了一些愚蠢的小细节,但我真的找不到我要去哪里错了。

包括服务器上的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 SERVER

 [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 

作为未来的参考,这个日志行是关键:

 Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2 

它告诉你,ssh甚至可以find用户,所以下一步的debugging应该是启用sssd日志,看看为什么getent passwd test1不起作用。

很高兴sssd现在适合你!

我最终解决了我的问题,通过设置用户'test1'在AD中的正确值uidNumber,gidNumber,homeDirectory和loginShell; 显然当我复制我的工作用户时,这些值不会与所有其他信息一起复制。