Linux ssh 无法登录的情况记录

这篇主要记录一些工作中碰到过的,有一些记录意思的案例

情况一:库文件被改动

问题描述

发现测试环境(Rhel6.4)账号无法登陆,密码正确时无响应,错误时提示错误,控制台进入后发现有如下报错

ERROR: ld.so: object '/lib/libcwait.so' from /etc/ld.so.preload cannot be preloaded: ignore

初步分析

1、因为测试了用户的正确密码和错误密码的对比,通过输出考虑是系统内部问题,另外因为禁用root远程登录,所以需要看控制台

2、在控制台发现有报错,测试用户登录也无法通过认证,尝试解决问题

3、发现是由于/etc/ld.so.preload 指向了一个不存在的库文件导致的,这个只能进入单用户模式挂载系统进行操作了

4、登录单用户模式,挂载文件系统,将/etc/ld.so.preload置空恢复系统正常使用

  1. 重启操作系统,在进入系统的界面按'e',进入编辑模式
  2. 第一个linux16行并在行尾添加内核参数 rd.break
  3. 按ctrl+x进入单用户模式
  4. 重新挂载系统目录 mount -o remount -o remount,rw /sysroot/
  5. 指定根目录,此后可以进行修改root密码等操作
switch_root:/# chroot /sysroot/
sh-4.2# 

5、恢复后登录系统,回溯系统的命令历史记录,发现有个脚本在近期动了这个文件,联系操作人员反馈这个操作的影响

Cloudwise-SmartAgent-Linux-1.4.0.0.sh
...
local perloadFileLocation="/etc/ld.so.preload"
...

总结

1、改动库文件很难判断会对哪些部分有影响,建议做好记录,方便回溯和问题的解决

2、大致定位了问题但不清楚具体的原因以及解决办法,还是得考虑搜索一下,描述清楚问题还是容易找到解决方案和解析的

参考

https://www.cnblogs.com/snigoal/archive/2012/07/17/2596569.html


情况二:系统参数调整

问题描述

SSH无法登录,控制台可以正常登录,SSH登录情况如下,连接上之后,直接断开:

Connection to xxx.xxx.xxx.xxx closed.

初步分析

1、控制台可以登录,ssh 远程登录能进入(因为已经提示了/etc/motd的内容)立即会退出,这个其实可以认为ssh配置应该是正常的,有其他问题

2、登录控制台操作,这会常见的有几种常见思路

一是看登录记录和历史记录,看是否有明显的变更

二是根据问题看日志排查,ssh 一般就是看 /var/log/messages 和 secure

三是依据自己的关于这个问题的思路排查一遍

3、因为考虑已经登录进入被退出了,所以考虑ssh配置和 /etc/security/access.conf 限制应该都是正常的

4、看看 sshd 服务状态(其实看messages应该更快),发现有报错,排查这个参数

systemctl status sshd
pam_limits(login:session): Could not set limit for ‘nofile’: Operation not permitted

5、排查 nofile 相关参数配置是否有变更或者是否正常

  1. 检查/etc/security/limits.conf 未发现明显异常
  2. nofile的值的上限是由/proc/sys/fs/nr_open限制的,默认是1048576,超过这个值就会导致连接ssh失败
  3. 检查/proc/sys/fs/nr_open,发现仅有65535,小于默认值,考虑应该是被修改过
  4. 查看/etc/sysctl.conf  ,考虑是这里修改过导致的异常,需要修改回来,并设置生效
more sysctl.conf |grep fs
fs.file-max = 65535
fs.nr_open = 65535

6、这些参数从默认值修改后,需要直接配置否则不会恢复默认值,除非重启

# 修改 /etc/sysctl.conf
fs.file-max = 26226683
fs.nr_open = 1048576
# 立即生效
sysctl -p

总结

1、这个可能从变更和日志排查会更快

2、这里描述一下这两个参数

/proc/sys/fs/file-max  设置内核最大的文件句柄数

/proc/sys/fs/nr_open  设置进程最大的文件句柄数 不能超过file-max

注意:配置的/etc/security/limits.conf 不能超过上述的两个参数,否则会有异常

参考

limits.conf超过限制导致ssh失败_limit.conf 过大 导致无法ssh-CSDN博客

linux查看进程limits解释,linux系统limit知识-CSDN博客


情况三: nologin 限制

问题描述

当创建了/etc/nologin 文件后,除root用户以外的,普通用户将无法登录,pam_nologin.so 限制普通用户登录时,会打印 /etc/nologin文件的内容,无法登录,会报错认证失败

处理办法

这个就看具体需求了,如果是误操作还是需要清理的,但是nologin的内容还是得写清楚一些


情况四:ldap 引起的用户切换异常

问题描述

同事反馈有一台RHEL5.4的服务器,发现只能使用root用户登录,其他用户无法登录,并且无法使用su切换。切换会卡住,没有响应。

初步排查

1、检查是否是因为/home目录异常,主要检查容量以及上层目录权限(无异常)

2、strace id root 正常 strace id username卡住,分析打印内容

  • 检查输出发现root用户是使用本地的认证,中途有经过ldap.conf文件
  • 其他用户会卡住

3、检查history发现有编辑过ldap.conf文件

4、检查ldap.conf

# more /etc/openldap/ldap.conf |grep -v '#'|grep -v ^$
base dc=sino,dc=com
timelimit 120
bind_timelimit 120
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
uri ldap://ldapserver/
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

# rpm -qf /etc/openldap/ldap.conf

1)查询发现nss_initgroups_ignoreusers 参数是指忽略ldap验证,使用本地认证,可以考虑将常用用户添加进来,先临时解决

2)ldapserver 这台服务器不通,namp扫描也不通,找相关同事确认这个早已弃用

3)确认这个ladp不再使用以后,可以考虑关闭这个服务,可能是 sssd 或者 nslcd  服务

总结

1)这个太古老的机器,不太好分析,还是得通过strace 尝试追踪调用来看看是否有有效信息


ssh 远程登录失败的情况非常多,建议先看看端口通不通,然后普通用户和root用户都尝试一下,另外就是控制台登录也需要尝试一下。如果能进入系统,就看看日志和操作记录回溯一下有没有异常操作。如果是新增用户,就对比一下用户和用户组。

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值