我有两个 Debian 虚拟机。其中一个正在运行 LDAP 服务器,而我正在尝试让另一个使用 libpam_ldap。
客户端计算机能够从 LDAP 获取 GUI 登录屏幕的用户,但我无法使用仅在 LDAP 中的用户 ssh 进入虚拟机。我也无法su
从根用户(本地)到 LDAP 用户,但我认为这是同样的问题。
在客户端计算机上,我可以用来ldapsearch
查找我想要的用户......
ldapsearch -x -D "cn=admin,dc=mydomain,dc=com" -W -b "uid=testuser,ou=People,dc=mydomain,dc=com"
这会提示我输入管理员 LDAP 密码,并返回我的用户记录:
dn: uid=testuser,ou=People,dc=mydomain,dc=com
uid: testuser
cn: Test User
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: [removed for stackexchange posting ]
shadowLastChange: 17543
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/dwill
gecos: Test User,,,
(注意,我的域名不是实际上“mydomain.com”。我为这篇文章编辑了它)
但是当我这样做时getent passwd testuser
,它不会返回任何内容。
有/etc/nsswitch.conf
这些行
passwd: files ldap
group: files ldap
shadow: files ldap
它曾经有compat ldap
这些,但我尝试改变它,files
因为这就是我找到的一本指南所具有的。无论哪种方式都不起作用。
已/etc/ssh/sshd_config
定UsePAM yes
。
我已经按照我可以通过谷歌找到的所有指南进行操作,但仍然无法正常工作。
有什么建议么?
答案1
我发现了问题。我在 Google 上找到的指南之一指示我这样做
apt-get libnss-ldap libpam-ldap nslcd
后来我还发现一篇文章说它libpam-ldapd
比它更新libpam-ldap
并安装了它。
libnss-ldap
提示您进行一些配置并创建一个/etc/libnss-ldap.conf
文件。然后libpam-ldap
卸载libnss-ldap
但留下其配置文件。显然该配置文件仍然有意义,因为它正在使用它,并且我在该文件中的 binddn 中遇到了错误。修复binddn后,它起作用了。
我真的不知道你为什么要安装这两个 ldap 模块。在第一个客户端虚拟机工作后,我仅使用 libpam-ldapd 和 nslcd 设置了另一个客户端虚拟机,它第一次工作了。
答案2
确保您有/etc/pam.d/sshd
以下内容:
auth sufficient pam_ldap.so
account sufficient pam_permit.so
然后,运行sudo /usr/sbin/pam-auth-update
并重新启动该sshd
服务。