Что я сделал:
Установлены libpam-ldapd
Настроить /etc/ldap/ldap.conf
Настроить /etc/ssh/ldap-keys.sh
так как root:root 0755
, подтвердил, что работает (/etc/ssh/ldap_keys.sh amadan
возвращает мои открытые ключи из LDAP).
Настроить /etc/nsswitch.conf
: passwd
, sudo
и shadow
сейчас скажи compat ldap
, и новая строка sudoers
имеет ldap
.
Настроить /etc/ssh/sshd_config
: AuthorizedKeysCommand
указывает на файл выше, AuthorizedKeysCommandUser
вновь созданному выделенному пользователю
Настроить /usr/share/pam-configs/mkhomedir
; побежал pam-auth-update
.
Текущая ситуация такова, что когда я пытаюсь войти в систему, AuthorizedKeysCommand
(/etc/ssh/ldap-keys.sh
) никогда не запускается. Я также не знаю, верна ли остальная часть моей конфигурации или нет, но я пока не могу сказать из-за sshd
всегда сообщает "недействительный пользователь":
Oct 17 17:22:59 xxx sshd[86244]: Invalid user amadan from yyy
Oct 17 17:22:59 xxx sshd[86244]: input_userauth_request: invalid user amadan [preauth]
Oct 17 17:23:01 xxx sshd[86244]: Connection closed by yyy [preauth]
Я знаю, что делаю что-то неправильно ... но что?
РЕДАКТИРОВАТЬ: соответствующие настройки PAM:
# auth
auth [success=2 default=ignore] pam_unix.so nullok_secure debug
auth [success=1 default=ignore] pam_ldap.so minimum_uid=1000 use_first_pass debug
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
# account
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad] pam_ldap.so minimum_uid=1000
account requisite pam_deny.so
account required pam_permit.so
РЕДАКТИРОВАТЬ: strace
выдержка из этого sshd
:
open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\20\0\0\0\0\0\0"..., 832) = 832
fstat(8, {st_mode=S_IFREG|0644, st_size=26544, ...}) = 0
mmap(NULL, 2121744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f58df52b000
mprotect(0x7f58df531000, 2093056, PROT_NONE) = 0
mmap(0x7f58df730000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x5000) = 0x7f58df730000
close(8) = 0
mprotect(0x7f58df730000, 4096, PROT_READ) = 0
open("/lib/x86_64-linux-gnu/security/pam_deny.so", O_RDONLY|O_CLOEXEC) = 8
Отрывок из рабочего sshd
(на другом сервере):
open("/lib/x86_64-linux-gnu/security/pam_ldap.so", O_RDONLY|O_CLOEXEC) = 8
read(8, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\37\0\0\0\0\0\0"..., 832) = 832
fstat(8, {st_mode=S_IFREG|0644, st_size=47792, ...}) = 0
mmap(NULL, 2142888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x7f8ef8a3c000
mprotect(0x7f8ef8a46000, 2097152, PROT_NONE) = 0
mmap(0x7f8ef8c46000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xa000) = 0x
close(8) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 8
fstat(8, {st_mode=S_IFREG|0644, st_size=152262, ...}) = 0
mmap(NULL, 152262, PROT_READ, MAP_PRIVATE, 8, 0) = 0x7f8efcee1000
close(8) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2", O_RDONLY|O_CLOEXEC) = 8
В рабочем sshd
, pam_ldap.so
призывает libldap_r-2.4.so.2
; в этом нет; он выходит без особых усилий и сразу же переходит к следующему модулю PAM. Я не знаю, почему.
Похоже, что кэш, поддерживаемый демоном кэширования службы имен, устарел / не был обновлен для отражения новых настроек LDAP.
sudo /etc/init.d/nscd restart
следует перезапустить службу и обновить кеш.