向已加入 AD 的 Centos 7 服务器发出身份验证问题

向已加入 AD 的 Centos 7 服务器发出身份验证问题

使用此链接,我已经设置了一个正确加入 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 解决了我的问题;显然,当我复制我的工作用户时,这些值并没有与所有其他信息一起复制。

相关内容