如何检查从客户端到服务器的 LDAP 连接。我正在处理 LDAP 身份验证,此客户端桌面需要通过 LDAP 服务器进行身份验证。我可以使用 LDAP 用户通过 SSH 连接到 LDAP 服务器,但当出现桌面登录提示时,我无法登录。它显示身份验证失败。
客户端计算机具有 Cent OS 6.3,LDAP 服务器具有 Cent OS 5.5
LDAP软件是Openldap。
LDAP 服务器日志甚至没有显示任何消息。
那么,如何测试客户端是否能成功连接到LDAP。
答案1
使用 ldapsearch。如果无法查询 LDAP 服务器,它将返回错误。
使用 ldapsearch 的语法:
ldapsearch -x -LLL -h [host] -D [user] -w [password] -b [base DN] -s sub "([filter])" [attribute list]
一个简单的例子
$ ldapsearch -x -LLL -h host.example.com -D user -w password -b"dc=ad,dc=example,dc=com" -s sub "(objectClass=user)" givenName
编辑:看来您没有为 gdm/xdm 正确配置 pam,这里有一个如何操作的示例:http://pastebin.com/TDK4KWRV
ldapsearch >= 2.5 注意事项:如果使用ldapsearch
openldap,选项-h
和-p
在 2.5 版中被删除. 改用-H
:
$ ldapsearch -H ldapuri -D binddn -w password -b searchbase filter
其中ldapuri
可以包含协议/主机/端口字段,例如:ldaps://ldap.example.org:636
答案2
要知道我的服务器和客户端设置是否正确我使用这个:
ldapsearch -x -b "uid=username,ou=people,dc=example,dc=com"
如果成功,答案将是这样的:
# extended LDIF
#
# LDAPv3
# base <uid=username,ou=people,dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# username, people, example.com
dn: uid=username,ou=people,dc=example,dc=com
cn: User Name
uid: username
uidNumber: 1050
loginShell: /bin/bash
homeDirectory: /home/webminder
gidNumber: 1030
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: inetOrgPerson
gecos: User Name
sn: User Name
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
您可以使用不同的过滤器。我的网络上只有一台服务器
答案3
您的问题不是 LDAP,而是 PAM。
如上所述在对 Sacx 的回答的评论中您可能没有配置控制台登录应用程序(通常是 PAM system
、xdm
、gdm
等服务)来咨询 LDAP 以对用户进行身份验证。
您应该查看有关如何进行设置的更多信息,请参阅 PAM 文档。