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的内容还是得写清楚一些

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

你可能感兴趣的:(故障与异常系列,运维,ssh,运维)