某日一位老师反映,机房的6号节点无法登录了。一开始以为是为节点防火墙配置IP白名单时忘记了加进去,但随后发现此节点并未进行白名单配置,密码也一直未有变更,于是在自己的电脑上连接,发现终端里很快显示出了Last login信息,说明这时应该已经成功与节点进行了连接,但随后就报出Connection closed,连接被关闭了。

都在一栋楼里,不大可能是网络问题,于是去机房里排查问题。将KVM控制平台连接到节点上后,发现屏幕上输出了一些类似设备调试中的报错信息,且已经完全卡死,不接受键盘的中断信号,于是只好长按强制关机,但再次开机后怪事发生了。

输入用户名root和密码后,Shell给出了这样的提示

(failed login是之前记错密码导致的)

显然不是密码问题,因为Last login信息已经显示就表明密码无误,但root用户在本地登录都会被拒绝,这个就有点吓人了,第一时间想到是不是遭遇黑客,赶紧到网上搜索相关问题,但回答大多都是针对SSH登录的情况,未见到本地登录也会被拒绝。有些文章提到可用普通用户登录,但此节点并未设置其他用户,无法尝试。

想要进行修复工作,首先必须想办法进入系统,于是尝试了一下单用户模式(关于单用户模式可参见 https://blog.51cto.com/hqq0000/2177280),发现可以进入!这下先松了一口气,至少实在没辙了可以把数据导出然后重装系统,要不然就得把整个集群断电拆硬盘了。

在单用户模式下,先修改了下密码,发现没用;然后又怀疑是不是bash出了问题,因为permission denied常见于执行某些没有执行权限的文件时,如果/bin/bash被恶意更改了权限,貌似是可能报这样错误的,但用ls -l看了下,也不是bash的事。

想到登录失败,日志中会有记录,于是查看/var/log/secure,发现末尾有如下一段记录

似乎登录失败的原因就出在这个pam上。PAM是Linux的一个动态验证模块,可能是它阻止了我们的登录行为。注意到最后几行,有提到nofile,这不是Linux最大打开文件数那个限制参数吗?于是进行调整(参见https://www.iteye.com/blog/jameswxx-2096461 总结的很不错),但仍未能解决问题。

继续分析日志,发现这样一行

确实,6号节点的所有用户,uid都小于1000,于是根据网上的解决方案(https://help.aliyun.com/knowledge_detail/41491.html?spm=a2c6h.13066369.0.0.2edd1479unyVgh),对/etc/pam.d下的文件进行修改,把system-auth中的相关语句注释掉了

但重启后发现还是没用!原来system-auth 会在重启后自动恢复配置,手工更改是无效的。

那么换个思路,既然禁止uid<1000的用户登录,我使用>1000的不就可以了?继续在单用户模式下,adduser创建了一个普通用户,passwd设置密码,并加入到root组里使其可以用sudo,重启,登录......

......还是不行......

难道就没有办法绕过pam了吗?突然想到ssh_config里好像有一个参数与PAM有关,叫use_PAM,马上打开一看,果然,被设置为了yes,赶紧改回no,然后回楼上ssh连接。

普通用户,root均成功!这回可算是解决了。

总结

经过一番排查,最终定位是PAM惹的祸,如果自己对PAM熟悉,应该会更快地定位问题。目前只是恢复了root用户的远程登录,对于root为什么在本地也会被拒绝,还未能找到答案。

但另一方面来讲,Linux设置PAM也必然有自己的考量,运行root远程登录,本身就存在一定安全风险,管理员还是应该只允许普通用户远程登录,而后使用su切换或sudo执行命令。

记一次root用户在本地登录及SSH连接均遭遇permission denied的问题排查经过的更多相关文章

  1. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  2. 记一次由selinux引起的使用cat查看文件报错Permission denied的问题排查

    事件起因:如下 1.在服务器上root用户,定期会生成一个文件,到/tmp目录,如:qq_5201351.txt,给other加上了r读取 2.zabbix端会周期性取这台服务器/tmp/qq_520 ...

  3. MySQL普通用户无法本地登录的解决方法及MySQL的用户认证算法

    在安装完成MySQL后,我们通常添加拥有相应权限的普通用户用来访问数据库.在使用普通用户本地登录数据库的时候,经常会出现怎么登录也无法登录的情况. 例如,我的MySQL中的用户为: mysql> ...

  4. Linux设置以root用户开机自动登录桌面

    目录 Ubuntu 18.04系统下设置 Redhat7.6系统下设置 Ubuntu 18.04系统下设置 1. 允许使用root用户登录桌面    Ubuntu默认不允许使用root用户登录桌面的, ...

  5. ESXI启用本地登录和SSH服务连接功能,使用Xshell连接

    1.选中Troubleshoot Options进行SSH服务配置 2.开启本地登录功能 3.开启远程连接功能 4.本地登录修改SSH服务允许基于密码登录 默认无法用密码登录ssh服务,只支持基于ke ...

  6. 已知root用户密码并登录,修改mysql用户名密码方法

    首先进入命令行下:以root用户登录,命令:mysql -uroot -p 回车 输入密码:mysql>use mysql:mysql>UPDATE user SET password=P ...

  7. MySQL 5.7免安装版设置编码格式、设置root用户密码 远程登录.

    一.设置默认编码格式为utf-8 ... 由于免安装版并没有my.ini的配置文件.需要自行粘贴配置并创建一个my.ini 配置如下: [mysql] # 设置mysql客户端默认字符集 defaul ...

  8. 服务器ssh登录提示“Permission denied, please try

    原因:不用怀疑,一般情况下,就是你密码输入错误了. 解决:找到正确的密码输入. 当然,也有可能是下面的情况: 在Windows中使用ssh客户端连接,提示"ssh服务器拒绝了密码,请再试一次 ...

  9. MySQL密码正确却无法本地登录,ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    MySQL密码正确却无法本地登录 报错如下: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password ...

随机推荐

  1. Unity Shader的形式

    (1)表面着色器 表面着色器是Unity自身的一种着色器代码类型.它需要的代码量很少,Unity在背后做了很多工作,但渲染的代价比较大.但Unity在背后仍旧把表面着色器转换成对应的顶点/片元着色器. ...

  2. 2019-2020 ICPC, Asia Jakarta Regional Contest C. Even Path

    Pathfinding is a task of finding a route between two points. It often appears in many problems. For ...

  3. 爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)

    一个程序没有设置超时时间,就可以说是一段有缺陷的代码. 读取超时指的就是客户端等待服务器发送请求的时间.(特定地,它指的是客户端要等待服务器发送字节之间的时间.在 99.9% 的情况下这指的是服务器发 ...

  4. 【并行计算-CUDA开发】GPGPU OpenCL/CUDA 高性能编程的10大注意事项

    GPGPU OpenCL/CUDA 高性能编程的10大注意事项 1.展开循环 如果提前知道了循环的次数,可以进行循环展开,这样省去了循环条件的比较次数.但是同时也不能使得kernel代码太大. 循环展 ...

  5. spring_mvc入门项目的小总结

    1.先搭建一个maven的web项目 ,然后把文件夹完善一下,创建一个java的文件夹和resource的问件夹,并指定他们各自的功能. 导入pom.xml文件的依赖 <properties&g ...

  6. Linux下的I/O复用与epoll详解(转载)

    Linux下的I/O复用与epoll详解 转载自:https://www.cnblogs.com/lojunren/p/3856290.html  前言 I/O多路复用有很多种实现.在linux上,2 ...

  7. PTA(Advanced Level)1083.List Grades

    Given a list of N student records with name, ID and grade. You are supposed to sort the records with ...

  8. 【Redis】Redis持久化

    Redis数据持久化 Redis的特性: 易扩展,大数据高性能,多样灵活的数据模型,受限内存 Redis默认端口: 6379 Redis数据持久化分为有两种: RDB: 每隔一段时间就把内存数据写入磁 ...

  9. 虚拟机ubuntu连不上网

    虚拟机ubuntu连不上网 解决地址:https://blog.csdn.net/spy_h/article/details/80933458

  10. paramiko模块(远程操作服务器)

    paramiko模块(远程操作服务器) django+paramkio实现远程某些服务器执行命令+上传文件 用于帮助开发者通过代码远程连接服务器,并对服务器进行操作. pip3 install par ...