Пара вещей:
1.) Если вы вводите getent passwd $ username для пользователя, который существует только в ldap, возвращает ли он правильную запись?
2 .) Как выглядит ваш файл /etc/pam.d/system-auth.
3.) Правильно ли он возвращает результаты для
ldapsearch -D $BINDDN -W -H ldap://$HOST 'uid=$RANDOM_USER'
Наконец, похоже, что ваш binddn находится в / usr / local / etc / ldap.conf использует ro_user, а pam binddn авторизуется с помощью testuser. Почему несоответствие. Убедитесь, что оба работают с ldapsearch
Я весь день боролся с ошибкой, очень похожей на описанную выше. В моем случае я получал такие сообщения:
Nov 26 15:19:25 digitalocean sshd[2373]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.196-30-62.static.virginmediabusiness.co.uk
Nov 26 15:19:25 digitalocean sshd[2373]: pam_ldap: error trying to bind as user "cn=dan.howard,ou=users,dc=example,dc=com" (Invalid credentials)
Nov 26 15:19:27 digitalocean sshd[2373]: Failed password for invalid user dan.howard from 62.30.196.60 port 63534 ssh2
«Недействительные учетные данные» - это отвлекающий маневр, и важным моментом было «недопустимый пользователь dan.howard». По-видимому, NSS сначала будет искать имя пользователя, и если он не распознает имя, тогда пароль, отправленный на сервер LDAP, будет буквальной строкой 'НЕПРАВИЛЬНО', что, конечно, обязательно неверно и выглядит очень странное поведение для меня (подробнее https://unix.stackexchange.com/questions/163213/ while-trying-to-ssh-pam-ldap-always-sends-the-password-incorrect-causing-bind )
Я видел множество руководств, в которых мне предлагалось поместить ldap в мой файл /etc/nsswitch.conf для строк passwd, group и shadow, а затем перезапустить nscd.
Я сделал это, и он сказал [ok], поэтому я не мог видеть, что пошло не так.
Оказывается, у меня вообще не был установлен модуль ldap nss. Все, что мне нужно было сделать, это:
apt-get install libnss-ldap
Затем NSS смог идентифицировать пользователей LDAP, что означало, что PAM отправит правильные пароли, и я смог войти в систему. Надеюсь, это поможет кому-то другому.
В моем случае, если это может помочь, я забыл добавить модуль ldap
в /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
gshadow: files ldap