我需要让我们的freebsd服务器通过ADauthentication,但它给我的问题。
环境:AD后端(Win 2k8r2)。 这与其他主机通过SSSD身份validation
FreeBSD 9.1用于客户端服务器
我已经configuration了所有我能想到的东西,而且我认为这是正确的,但是当我尝试使用AD帐户login时,它失败:
pam_ldap: error trying to bind as user "CN=testuser,CN=Users,DC=example,DC=com" (Invalid credentials)
所以我知道它正在越过初始绑定,因为它正在带回的DN是正确的,并且来自AD服务器。 当它然后试图绑定与该DN不能,这导致身份validation失败。 我已经使用ldapsearchtesting了AD服务器上的testing用户的信用,甚至将其设置为ldap.conf中的默认绑定DN,并且适用于所有testing。
我不能为我的生活弄清楚为什么初始绑定工作,但是然后用户的绑定失败。
作为参考,这里是我的configuration文件:
/usr/local/etc/ldap.conf
pam_login_attribute uid base dc=example,dc=com uri ldap://xxx.xxx.xxx.xxx/ ssl no binddn CN=ro_user,CN=Users,DC=example,DC=com bindpw somerandompw
/usr/local/etc/openldap/ldap.conf
pam_login_attribute uid base dc=example,dc=com uri ldap://xxx.xxx.xxx.xxx/ ssl no
上将/etc/pam.d/sshd
auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local auth sufficient /usr/local/lib/pam_ldap.so no_warn debug auth required pam_unix.so no_warn try_first_pass account required pam_nologin.so account required pam_login_access.so account required pam_unix.so account required /usr/local/lib/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user session required pam_permit.so password required pam_unix.so no_warn try_first_pass
编辑:我有一个想法 – 有谁知道如果pam_ldap肯定使用相同的绑定/身份validation过程的初始绑定和身份validation绑定? 我很努力地掌握绑定在初始绑定时是如何成功的,但在绑定到身份validation时却失败了。
几件事情:
1.)如果你为一个只存在于ldap中的用户做一个getent passwd $ username,它是否回退正确的条目?
2.)你的/etc/pam.d/system-auth文件是什么样的。
3.)是否正确返回结果
ldapsearch -D $BINDDN -W -H ldap://$HOST 'uid=$RANDOM_USER'
最后,看起来像/usr/local/etc/ldap.conf中的binddn使用的是ro_user,而binddn pam使用的是testuser。 为什么这个差距。 确保这两个工作与ldapsearch
我一直在与上述非常类似的错误挣扎。 就我而言,我看到这样的消息:
Nov 26 15:19:25 digitalocean sshd[2373]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.196-30-62.static.virginmediabusiness.co.uk Nov 26 15:19:25 digitalocean sshd[2373]: pam_ldap: error trying to bind as user "cn=dan.howard,ou=users,dc=example,dc=com" (Invalid credentials) Nov 26 15:19:27 digitalocean sshd[2373]: Failed password for invalid user dan.howard from 62.30.196.60 port 63534 ssh2
“凭证无效”在这里是一个红鲱鱼,重要的是“无效用户dan.howard”。 很明显NSS会先查找用户名,如果它不能识别名字,那么发送给LDAP服务器的密码将是string'错误',这当然是错误的,看起来很像奇怪的行为给我(更多信息https://unix.stackexchange.com/questions/163213/while-trying-to-ssh-pam-ldap-always-sends-the-password-incorrect-causing-bind )
我看过很多教程,指导我将“ldap”放入passwd,group和shadow行的/etc/nsswitch.conf文件中,然后重新启动nscd。
我做了这个,它说[好],所以我看不出有什么问题。
事实certificate,我根本没有安装ldap nss模块。 我所需要做的就是:
apt-get install libnss-ldap
然后NSS能够识别LDAP用户,这意味着PAM将发送正确的密码,并且我能够login。希望这可以帮助其他人。