我的机器的操作系统是redhat6.8,ip为:172.10.54.19 远程有一台ldap服务,在这台机器上使用authconfig-tui命令配置ldap客户端,
1 . 使用id命令,发现可以正常的找到ldap用户 jiang
2 .使用root用户su jiang 也能正常切换到jiang用户
3. 使用ssh [email protected] 时,
报错:Permission denied, please try again.
4.系统中有个非ldap用户,非root用户,是操作系统的普通用户xiao
使用ssh [email protected] 输如密码:正常登陆
4.在机器上,当普通用户xiao使用:su jiang,输入密码:********
报错:su:incorrect password 可以确保的是密码是正确的。
分析问题:操作系统用户可以正常ssh登陆,而ldap用户不能正常登陆,
1. 有可能是ssh的配置问题,ssh配置文件位置 /etc/ssh/sshd_config
2.ldap的问题,那就涉及到pam组件,pam的配置文件在/etc/pam.d/system-auth
解决问题:1. 首先查看/etc/ssh/sshd_config ,参数: PasswordAuthentication yes | UsePAM yes 这2个参数配置都是正确的,切无其他限制用户的参数。
2.网上说添加alllowUser jiang,尝试了一次,重启sshd服务,发现问题依然存在
3.检查pam组件,
a.命令:rpm -qa | grep nss-pam
b.返回信息:nss-pam-ldapd-0.7.5-32.el6.x86_64(redhat是需要这个进行ldap的认证,所以必需要安装)
4.检查pam的配置文件 system-auth
.....
auth sufficient pam_sss.so use_first_pas
....
account [default=bad success=ok user_unknown=ignore] pam_sss.so
发现系统的auth,account,password,session都只有pam_sss.so,这个是操作系统的认证,缺少ldap级别的认证,加上: auth sufficient pam_ldap.so use_first_pas 这样的配置,问题解决。这是进行ldap认证,没有这一行,
同理后面的account,password,session也要加上pam_ldap.so,从而保证ldap用户和操作系统用户使用上具有同样的权限和感知。
account,password,session加上pam_ldap.so的相关配置
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so
结论: 1. auth sufficient pam_sss.so use_first_pas 是操作系统的用户这一层的认证,所以操作系统用户xiao用户可以ssh登陆,
2. 而缺少auth sufficient pam_ldap.so use_first_pas ,也就缺少了ldap层的用户认证。jiang(ldap用户)也就未进行ldap认证,可以理解为输入的密码没有发送到ldap服务端,操作系统接受不到来自ldap服务端有关这个用户的认证信息,所以认证不通过。
3. 而root具有超级权限,所以可以不用认证,从而直接切换到任意的用户。
4.redhat7 版本,以及redhat 6.6版本,当使用authconfig-tui的时候,是可以将以上的信息自动写入到对应的配置文件的。