我已经使用这篇文章配置了运行centos 7的ldap本地服务器:https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.html。
现在我的 LDAP 服务器正在运行,没有任何问题。在我的 LDAP 服务器中,防火墙被禁用。但是,selinux 已启用。
另外,我使用迁移工具将本地用户迁移到 ldap db,也成功了。
另外,我安装并配置了phpldapadmin,也成功了。然后我连接了另一个 ldap 服务器作为客户端(我安装了 sssd、krb5-workstation,并使用 authconfig-tui 进行连接),仅用于身份验证。
当我使用以下命令测试 LDAP 连接(来自客户端服务器)时
[root@ldapclient ~]# getent passwd user1
user1:*:1001:1001:user1:/home/user1:/bin/bash
[root@ldapclient ~]# id user1
uid=1001(user1) gid=1001 groups=1001
[root@ldapclient ~]# id testfromphpldapadmin
uid=1003(testfromphpldapadmin) gid=1010(ldapusers) groups=1010(ldapusers)
(testfromphpldapadmin - 使用 phpldapadmin user1 创建 - 使用迁移工具迁移的用户)
根据之前的结果,我认为我的 LDAP 身份验证可以正常工作,没有任何问题
但是当我尝试使用 ldap 用户帐户进行 ssh 时
login as: user1
user1@centclient's password:
Access denied
答案1
请注意,要成功登录,必须满足以下两件事:
- 文件 /etc/nsswitch.conf 中配置的名称服务开关
- PAM 配置在 /etc/pam.d 目录中的各个文件中定义
由于getent
似乎返回了正确的数据,因此您的 /etc/nsswitch.conf 似乎是正确的。
然后我会检查 /etc/pam.d/common* 中的配置是否使用模块pam_sss.so。当然,您应该检查您的日志。