33

如何ssh无法登录可以su切换的问题

 5 years ago
source link: https://www.linuxprobe.com/ssh-no-su.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
一、故障现象

接业务侧同事邮件,一台现网主机使用正确的用户名密码 ssh 登录不上(之前正常),使用其他用户 “ su - 该用户 ” 输入密码可以正常切换进去。而且使用该用户进行 ftp 登录也正常。

主机系统:SUSE Linux Enterprise Server 10 (x86_64) sp1 ----系统有点老旧了

问题用户:prestat ------其他用户正常

二、排查
1、chage指令查看

首先使用prestat 用户及密码进行ssh 登录尝试,发现问题同业务侧同事描述一致。改用root 直接进入登录,先使用chage命令查看用户是否因密码过期被锁(这步实际上可以忽略,因为ftp登录及su切换过来正常,不过稳妥起见,还是先看下)

www.361way.com:~ # chage -l prestat
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Mar 12, 2015
Password Expires: Never
Password Inactive: Never
Account Expires: Never

同时又用chage命令查看了一个正常用户,发现显示的一致。

注:接下来还可以查看下/etc/shadow 文件,查看用户是否真正的被锁定,不过这里按排障思路先不直入正题。因为按下面的步骤可以直接定位根因。

2、message日志查看

使用root登录后,切换到/var/log目录 ,开启一个终端通过tail -f message 查看日志变化,使用SCRT 再次使用prestat 用户登录,查看登录时日志的变化。通过该方法查看到了日志有报错如下:

www.361way.com:/var/log # tail -20000 messages |grep deny
Apr 9 16:54:37 www.361way.com sshd[11911]: pam_tally(sshd:auth): user prestat (310) tally 39, deny 6
Apr 9 17:01:11 www.361way.com sshd[25582]: pam_tally(sshd:auth): user prestat (310) tally 40, deny 6

从上面可以看到,用户登录时触发了pam.d下的sshd登录认证相关模块pam_tally ,具体原因是其超出了最大6次输入错误密码的限制 。

3、pam文件查看

查看sshd服务的pam配置文件,在其11行发现有pam_tally的策略配置,如下:

www.361way.com:/var/log # cat /etc/pam.d/sshd
#%PAM-1.0
auth include common-auth
auth required pam_nologin.so
account include common-account
password include common-password
session include common-session
# Enable the following line to get resmgr support for
# ssh sessions (see /usr/share/doc/packages/resmgr/README)
#session optional pam_resmgr.so fake_ttyname
auth required pam_tally.so deny=6
account required pam_tally.so

上面11行的配置有点霸道,超过6次错误密码,就直接永远锁定了,除非手工解除 ---- 安全组同事的配置,不好非议 。其实可以让其自动过一段时间解除限制的,网上经常看到配法如下:

auth required pam_tally.so deny=3 unlock_time=300

上面的配置表示,超过3次失败,锁定300秒 ,时间到了以后,自动解除限制。

三、问题解决

既然找到了原因,此时通过查看/etc/shadow文件,会发现以: 分隔的第二例加密后的密码串部分前面会有一个叹号! ,即表示用户被锁定,既然找到了原因,可以通过下面的方法解锁:

www.361way.com:/var/log # pam_tally --reset --user prestat //prestat为用户名
User prestat (310) had 40
或
faillog -r

注:由于该主机使用的系统版本有些老,使用还是pam_tally模块,实际上后面一些新的系统里很多开始使用pam_tally2模块,具体解锁reset次数也可以简化下:

pam_tally2 -r -u 用户名

其他拓展:

查看某一用户错误登陆次数:
pam_tally --user
例如,查看work用户的错误登陆次数:
pam_tally --user work
清空某一用户错误登陆次数:
pam_tally --user --reset
例如,清空 work 用户的错误登陆次数,
pam_tally --user work --reset

该模块的更多用法和信息也可以通过man pam_tally 或 man pam_tally2 进行查看。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK