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

一、故障现象

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

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

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

二、排查

1、chage指令查看

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

www.111cn.net :~ # 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.111cn.net :/var/log # tail -20000 messages |grep deny

Apr 9 16:54:37 www.111cn.net  sshd[11911]: pam_tally(sshd:auth): user prestat (310) tally 39, deny 6

Apr 9 17:01:11 www.111cn.net  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.111cn.net :/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.111cn.net :/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 进行查看。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索密码
, 文件
, 模块
, 配置
, 错误
用户
su内存不足的解决办法、shell ssh远程执行su、ssh su、ssh sudo su、ssh 远程执行su,以便于您获取更多的相关知识。

时间: 2024-09-14 20:57:41

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

linux中ssh密钥登录失败解决办法

今天我在设置ssh密钥登录的时候,发现这个奇怪的情况,我将我的id_rsa.pub密钥内容拷贝到远程linux主机的A用户的.ssh下的authorized_keys(这个文件我手动建立的)下,但是再次登录时,发现还需要输入密码,额?这不科学!然后我查看了一下远程linux主机的sshd日志 /var/log/secure 发现了如下日志输出内容: Authentication refused: bad ownership or modes for file /home/sysadmin/.ss

linux中ssh可以登录sftp不能登录解决办法

我的服务器一直正常使用,平时使用secureCRT进行管理,使用secureFX进行文件的上传下载,突然有一天secureFX连接的时候出问题了,secureFX的日志如下: i SecureFX 版本 6.6.1.289 (Official Release - November 4, 2010) i 会话 00002 成功建立(为) session mydomain_218.245.0.54_cd.mydomain.com i SSH2Core version 6.6.0.289 i 正在连接

linux中ssh密钥登录失败问题解决办法

搞一个ssh的密钥登录,结果发现就是无法使用密钥登录,非让我输入密码.苦恼. 输入ssh连接代码 ssh -i private.key -v user@host.com -p22 从连接的信息中看不出有什么问题. debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: publickey debug1

如何将 Debian Linux 中的默认的 Python 版本切换为替代版本

如何将 Debian Linux 中的默认的 Python 版本切换为替代版本 当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用. $ ls /usr/bin/python* /usr/bin/python /usr/bin/python2 /usr/bin/python2.7 /usr/bin/p

asp.net session、登录用户、cookie常见问题解决办法

asp教程.net session.登录用户.cookie常见问题解决办法 这里主要讲了关于session缓存,失效,以及cookie无法删除等常用见的问题了. OutPutCache 自定义缓存:session.登录用户.cookie 等 其实这个也是新瓶装旧酒的问题,前段时间,把这个做了,况且效果和性能都还不错,所以记录下,希望能帮助更多的人 虽然 outputcache 很重要,但是这个功能真的不好用,很多时间不能满足需求,比如做一些自定义方面的缓存依赖,如:session.登录用户信息.

linux查看ssh用户登录日志与操作日志

ssh用户登录日志 linux下登录日志在下面的目录里:  代码如下 复制代码 cd /var/log 查看ssh用户的登录日志:  代码如下 复制代码 less secure 1. 日志简介 日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹.日志主要的功能有:审计和监测.他还可以实时的监测系统状态,监测和追踪侵入者等等. 在Linux系统中,有三个主要的日志子系统: 连接时间日志–由多个程序执行,把纪录写入到/v

centos中时间修改后重启后无效的问题解决办法

Linux的时间有两种,一是系统时间,另外是硬件时间(BIOS时间). 系统每次启动时会读出BIOS时间,将之赋给系统时间.之后系统时间将独立运行,而BIOS时间不会变化. 在BIOS时间中,有两种表示形式.一种是以localtime表示的,一种是以UTC表示的.具体查看的方式可以通过hwclock –debug,该命令可以输出当前硬件时间的表示形式. 安装完centos后,发现时间与本地时间不匹配,在网上找了好多的办法,但是一直没有奏效,重启之后,又恢复为原来的时间.很是纳闷.最后抱着试一试的

LINUX中RSA认证登录SSH

  方法一, 有的时候经常需要登录ssh,每次都需要输入密码,会比较繁琐.所以设置了一下使用RSA公钥认证的方式登录Linux. 首先需要在服务器端设置/etc/ssh/sshd_config # vim /etc/ssh/sshd_config 修改如下两行为yes.其实大多数情况下不用修改,默认就是yes. RSAAuthentication yes PubkeyAuthentication yes (1) 如果客户机和服务器都是Linux机器,那么我们使用下面的方法:(后面第2节会提到怎么

windows/linux中shell自动登录ssh并执行一些命令

ssh安全的自动登录 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ; A和B的系统都是Linux 在A上的命令:  代码如下 复制代码 # ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码) # ssh root@172.24.253.2 "mkdir .ssh;chmod 0700 .ssh" (需要输入密码) # scp ~/.ssh/id_rsa.pub r