我正在尝试在运行 debian 6 的 openldap 服务器上设置名为 ldap_client 的 ldap-client 主机上的 ssh 身份验证。
以下是 ldapsearch 在服务器上返回的内容:
dn: dc=localnet,dc=lan
objectClass: dcObject
objectClass: organization
dc: localnet
o: Some_Enterprise
description: localnet.lan
dn: ou=people,dc=localnet,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=localnet,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: uid=joe,ou=people,dc=localnet,dc=lan
objectClass: account
objectClass: posixAccount
cn: joe
uid: joe
uidNumber: 10001
gidNumber: 2000
homeDirectory: /home/joe
loginShell: /bin/sh
gecos: joe
description: joe
在客户端,我已经配置了 libnss-ldap 和 nsswitch.conf,如下所示;
passwd: files ldap
group: files ldap
shadow: files ldap
这样客户端上的 unix 命令 id(id joe)就会返回其 uid/gid。这样用户就被 ldap 识别了。
但是在 Google 上折腾了几个小时之后,我仍无法使用 ssh 在客户端上设置身份验证。
我在 /etc/pam.d/commun-account、commun-auth 和 commun-password 中有这些行
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure
这些在 /etc/pam.d/ssh 上
auth sufficient /lib/security/pam_ldap.so no_warn
auth required pam_unix.so no_warn try_first_pass
account required /lib/security/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user
account required pam_unix.so
我在 /etc/ssh/sshd.conf 上有 usePam=yes。
以下是客户端上auth.log的输出:
==> /var/log/auth.log <==
Dec 7 17:39:06 versionning sshd[3898]: pam_ldap: error trying to bind (Invalid credentials)
Dec 7 17:39:06 versionning sshd[3898]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx.kimsufi.com user=joe
Dec 7 17:39:08 versionning sshd[3898]: Failed password for joe from a.b.c.d port 58191 ssh2
在服务器上: ==> /var/log/syslog <== Dec 7 16:42:43 ldap slapd[963]: <= bdb_equality_candidates: (uid) 未编入索引
和 tshark
LDAP bindResponse(1) invalidCredentials
我不明白在哪里以及如何配置 joe 的密码。不是在客户端的本地 unix 帐户上,而是在服务器上;我不知道在哪里做这件事
答案1
LDAP 对象类posixAccount
有一个userPassword
属性 -- 在此设置 Joe 的密码。
完成此操作后,请确保您可以以 Joe 的身份绑定到 LDAP 目录(您可以用ldapsearch
它来测试)- 如果可行,pam_ldap 也应该可行。
答案2
好吧,你的joe
对象 ( dn: uid=joe,ou=people,dc=localnet,dc=lan
) 应该有一个userPassword
属性。此属性保存代表用户密码的密码哈希值。在此处阅读有关密码和 OpenLDAP 的信息:http://www.openldap.org/faq/data/cache/419.html