linux中ssh无法登录可以su切换的问题解决办法

sunshine技术博客 sunshine技术博客

在使用linux系统时碰到ssh无法登录可以su切换问题了,下面我们就一起来看看这个问题的解决办法吧,希望文章能够帮助到各位朋友吧.

一、故障现象

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

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

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

二、排查

1、chage指令查看

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

  1. www.phpfensi.com:~#chage-lprestat
  2. Minimum:0
  3. Maximum:99999
  4. Warning:7
  5. Inactive:-1
  6. LastChange:Mar12,2015
  7. PasswordExpires:Never
  8. PasswordInactive:Never
  9. AccountExpires:Never

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

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

2、message日志查看

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

  1. www.phpfensi.com:/var/log#tail-20000messages|grepdeny
  2. Apr916:54:37www.phpfensi.comsshd[11911]:pam_tally(sshd:auth):userprestat(310)tally39,deny6
  3. Apr917:01:11www.phpfensi.comsshd[25582]:pam_tally(sshd:auth):userprestat(310)tally40,deny6

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

3、pam文件查看

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

  1. www.phpfensi.com:/var/log#cat/etc/pam.d/sshd
  2. #%PAM-1.0
  3. auth<ahref="/tags.php/include/"target="_blank">include</a>common-auth
  4. authrequiredpam_nologin.so
  5. accountincludecommon-account
  6. passwordincludecommon-password
  7. sessionincludecommon-session
  8. #Enablethefollowinglinetogetresmgrsupportfor
  9. #sshsessions(see/usr/share/doc/packages/resmgr/README)
  10. #sessionoptionalpam_resmgr.sofake_ttyname
  11. authrequiredpam_tally.sodeny=6
  12. accountrequiredpam_tally.so

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

auth required pam_tally.so deny=3 unlock_time=300

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

三、问题解决

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

  1. www.phpfensi.com:/var/log#pam_tally--reset--userprestat//prestat为用户名
  2. Userprestat(310)had40
  3. 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 进行查看.

相关广告
  • linux中ssh无法登录可以su切换的问题解决办法 linux中ssh无法登录可以su切换的问题解决办法 linux中ssh无法登录可以su切换的问题解决办法
相关阅读

linux中ssh无法登录可以su切换的问题解决办法

2019/10/10 17:45:18 | 谷歌SEO算法 | 搜索引擎