openldap 身份验证 ssh

openldap 身份验证 ssh

我正在尝试在运行 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

相关内容