我有两个 Debian 虚拟机。一个正在运行 LDAP 服务器,我正在尝试让另一个使用 libpam_ldap。
客户端机器能够从 LDAP 获取用于 GUI 登录屏幕的用户,但我无法使用仅在 LDAP 中的用户 ssh 进入 VM。我也不su
能从 root 用户(本地)到 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
。
我已经按照我可以通过 Google 找到的所有指南进行操作,但仍然无法正常工作。
有什么建议么?
我发现了问题。我在 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 模块。在让第一个客户端 VM 工作后,我只使用 libpam-ldapd 和 nslcd 设置了另一个客户端 VM,它第一次工作。
确保您具有
/etc/pam.d/sshd
以下内容:然后,运行
sudo /usr/sbin/pam-auth-update
并重新启动sshd
服务。