LDAP 和 PAM 适用于 GUI 登录,但不适用于 SSH

LDAP 和 PAM 适用于 GUI 登录,但不适用于 SSH

我有两个 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_configUsePAM 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服务。

相关内容