Estou tentando configurar o acesso ssh através do pamldap no Ubuntu 16.04 e depois de ter tudo configurado não consigo sincronizar o /etc/passwd com as informações do servidor LDAP.
ldapsearch funciona bem, então as opções de ligação estão bem configuradas.
Quando eu faço
getent group
Eu posso ver todos os grupos do servidor LDAP, mas
getent passwd
Tem apenas as informações dos usuários locais.
Ao depurar o nslcd, posso ver que ele consegue encontrar meu usuário no servidor LDAP sempre que tento fazer um login (su ou ssh) com um usuário ldap.
Além disso:
su ldap_user
Devoluções:
Nenhuma entrada de senha para o usuário
E quando tento uma conexão ssh, o auth.log escreve:
Invalid user ldap_user from IP
input_userauth_request: invalid user ldap_user [preauth]
pam_unix(sshd:auth): check pass; user unknown
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=IP
pam_sss(sshd:auth): Request to sssd failed. Connection refused
pam_ldap(sshd:auth): Authentication failure; user=ldap_user
Failed password for invalid user ldap_user from IP port 55911 ssh2
nsswitch.conf
arquivo tem:
# /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
hosts: files dns ldap
networks: files ldap
protocols: db files ldap
services: db files ldap
ethers: db files ldap
rpc: db files ldap
netgroup: nis ldap
sudoers: files
Nenhum usuário LDAP tinha a ObjectClass "PosixAccount", então o atributo uid não estava sendo levado em consideração porque a classe padrão que estava sendo utilizada não possuía tal atributo, que é obrigatório para poder efetuar login em máquinas Linux.