ssh无法登录可以su切换的问题
2015-06-29 16:44
260 查看
一、故障现象
接业务侧同事邮件,一台现网主机使用正确的用户名密码 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 prestatMinimum: 0Maximum: 99999Warning: 7Inactive: -1Last Change: Mar 12, 2015Password Expires: NeverPassword Inactive: NeverAccount Expires: Never同时又用chage命令查看了一个正常用户,发现显示的一致。注:接下来还可以查看下/etc/shadow 文件,查看用户是否真正的被锁定,不过这里按排障思路先不直入正题。因为按下面的步骤可以直接定位根因。
2、message日志查看
使用root登录后,切换到/var/log目录 ,开启一个终端通过tail -f message 查看日志变化,使用SCRT 再次使用prestat 用户登录,查看登录时日志的变化。通过该方法查看到了日志有报错如下:www.361way.com:/var/log # tail -20000 messages |grep denyApr 9 16:54:37 www.361way.com sshd[11911]: pam_tally(sshd:auth): user prestat (310) tally 39, deny 6Apr 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.0auth include common-authauth required pam_nologin.soaccount include common-accountpassword include common-passwordsession 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_ttynameauth required pam_tally.so deny=6account required pam_tally.so上面11行的配置有点霸道,超过6次错误密码,就直接永远锁定了,除非手工解除 ---- 安全组同事的配置,不好非议
![](http://www.361way.com/wp-content/plugins/kindeditor-for-wordpress/plugins/emoticons/images/13.gif)
。其实可以让其自动过一段时间解除限制的,网上经常看到配法如下:
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 进行查看。
相关文章推荐
- IO - 同步,异步,阻塞,非阻塞
- Android 设置代理(验证用户名和密码)
- MySQL学习系列12: 权限管理
- Android Studio Attach source code
- Perl Syslog server
- adsf
- 游戏锐评:关注手游安全 如何防范手游破解
- [LintCode] 合并排序数组
- 使用xCAT安装部署Linux以及Windows操作系统
- linux下触摸屏应用编程
- Android NDK开发之Jni调用Java对象
- linux下FTP设置技巧
- 谈谈ClassLoader
- [STL]显示调用析构函数
- JSONObjectWithData方法里options参数选择解释
- 多线程1(java基础)
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Mono制作安装包让C#桌面应用程序脱离net framework步骤
- 垃圾回收器介绍
- 如何安装PANABIT?