Назад | Перейти на главную страницу

openldap аутентификация ssh

Я пытаюсь настроить на сервере openldap, работающем на debian 6, аутентификацию ssh на хосте ldap-client с именем ldap_client.

Вот что возвращает 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 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

У меня есть usePam = yes в /etc/ssh/sshd.conf.

Вот вывод 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 <== 7 декабря 16:42:43 ldap slapd [963]: <= bdb_equality_candidates: (uid) не проиндексировано

и с tshark

LDAP bindResponse(1) invalidCredentials    

Я не понимаю, где и как мне настроить пароль Джо. Не на локальной учетной записи unix клиента, а на сервере; Я не знаю где это делать

В posixAccount Класс объектов LDAP имеет userPassword attribute - Установите здесь пароль Джо.
Как только вы это сделаете, убедитесь, что вы можете выполнить привязку к каталогу LDAP как Joe (вы можете использовать ldapsearch чтобы проверить это) - Если это работает, pam_ldap также должен работать.

Ну твой joe объект (dn: uid=joe,ou=people,dc=localnet,dc=lan) должен иметь userPassword атрибут. Этот атрибут содержит хэш пароля, представляющий пароль пользователя. Прочтите о паролях и OpenLDAP здесь: http://www.openldap.org/faq/data/cache/419.html