我正在尝试通过 Ubuntu 16.04 中的 pamldap 设置 ssh 访问,并且在配置完所有内容后,我无法将 /etc/passwd 与 LDAP 服务器的信息同步。
ldapsearch 工作正常,因此绑定选项配置良好。
当我做
getent group
我可以看到所有 LDAP 服务器组,但是
getent passwd
只有本地用户信息。
通过调试 nslcd,我可以看到每当我尝试使用 ldap 用户登录(su 或 ssh)时,它都能在 LDAP 服务器中找到我的用户。
另外:
su ldap_user
返回:
用户没有密码条目
当我尝试 ssh 连接时,auth.log 写道:
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
文件有:
# /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
没有 LDAP 用户具有 ObjectClass“PosixAccount”,因此没有考虑属性 uid,因为正在使用的默认类没有这样的属性,这是能够登录 Linux 机器所必需的。