如何在 12.04 上通过 ssh 配置 ldap 的 pam.d 文件?

如何在 12.04 上通过 ssh 配置 ldap 的 pam.d 文件?

我正在尝试设置一个 Ubuntu 12.04 服务器,以便远程 ldap 服务器中具有有效帐户的用户可以登录到 ubuntu 服务器。

我严格遵循了本指南:http://wiki.linuxquestions.org/wiki/Pam_ldap

当我尝试通过 ssh 进入该机器时,我在 /var/log/auth.log 中看到的内容如下输入我的密码:

Connection from 192.168.0.10 port 36624
Invalid user bentrupk from 192.168.0.10
input_userauth_request: invalid user bentrupk [preauth]

但是,使用数据包嗅探器,我还看到使用我的用户名对 ldap 服务器进行成功查询,该查询返回了 ldap 中的我的 DN。

然后我输入密码,但数据包嗅探器显示具有正确 DN 的 ldap 绑定请求,但密码为“....不正确”。

显然,这不是我输入的密码。

我假设这是我的一个或多个 pam.d 配置文件的问题。

我想知道 auth.log 中的“无效用户”是否有提示?在我输入密码之前,显然已经使用 ssh 提供的用户名向 ldap 服务器发出了请求,并成功返回了正确的条目。

但是,我不清楚哪个先发生:auth.log 中的“无效用户”或数据包嗅探器中看到的 ldap 搜索(只是为了清楚起见,ssh 用户没有本地帐户)。

我该怎么做才能进一步调试或确认我的配置正确?

答案1

我对 PAM 模块的功能做出了错误的假设。我假设在 LDAP 中拥有一个帐户实际上可能会导致模块在系统上创建用户(这个假设可能受到我的 webdev 背景的影响),就像它也可以创建主目录一样(pam_mkhomedir)。

一旦我在本地创建了用户,请使用:

sudo adduser doej --disabled-password

我能够使用 LDAP 中的 doej 帐户登录。

顺便说一句,我发现了一个解决方案使用pam_exec它也允许我动态地创建用户。

答案2

无需本地帐户即可让 ldap 帐户登录。

也许当它无法在 ldap 中找到正确的用户时,它会恢复到本地创建的用户帐户。

无效用户错误提示您的 ldap 服务器中的查找没有返回您尝试验证的用户帐户。

在你的 ldap 服务器中启用调试: 用这些行创建一个 ldiff 文件

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

并使用以下命令将 ldif 文件导入到你的 ldap 服务器:

ldapadd -x -W -D 'cn=Manager,dc=pvpsc,dc=com' -f increaseverbosity.ldiff

这会将对您的 ldap 进行的 ldap 查询记录到服务器的系统日志中。使用 ldapsearch 工具搜索您的 ldap 服务器并读出用户的用户名。将成功的日志与失败的身份验证创建的日志进行比较。

有什么不同?这可能就是你发现错误的地方。

相关内容