首页 > 其他分享 >记一次连正确的账密都无法通过控制台登录的处理过程

记一次连正确的账密都无法通过控制台登录的处理过程

时间:2024-07-31 11:53:23浏览次数:11  
标签:处理过程 操作系统 登录 apt 账密 无法 控制台 pam

背景:用户的一台生产机器在许久之前就出现了SSH无法登录操作系统(Ubuntu 22.04系统)的现象,但由于生产环境是有多台机器在支撑业务的,所以坏一台也不会影响业务,但用户近期将此问题反馈了过来想让帮忙解决掉此问题,但询问操作系统内做了哪些操作,给的答复都是很模糊,可以说完全不知道...于是只能在系统内自行排错了

首先我们在控制台窗口输入账号密码后,发现登录不上,初步怀疑可能是用户给的账号密码有误导致的,于是想通过进入救援模式进行密码重置后再次登录验证,但在进入救援模式过程中,弹出让其输入root密码相关提示,

此时我们输入密码后,发现能够正常登录,即验证了账号密码的准确性,排除了密码错误的可能

这里省略了一部分截图,原因在于问题排错时没能及时截图保留,在救援模式下能正常登录操作系统后检查了iptables规则、防火墙、hosts.deny、hosts.allow、/etc/passwd及/etc/shadow 等配置文件的权限,发现无异常,于是在救援模式下创建了一个测试账号用于登录验证,而后进行系统重启,在控制台界面下依然无法通过root以及测试账号进行登录,但发现测试登录的控制台都是tty1,于是通过切换tty进行登录验证,依旧不可行,所以判断为非账号问题及控制台问题,即可能是其他限制导致的。

---------

再次重启操作系统进入救援模式,此时我们检查了/var/log/auth.log 的日志,发现有相关线索,如下图所示

 

在auth.log日志中能看到前面测试登录切换了不同的tty,但还是无法正常登录,但关键线索在于 /lib/security/pam_tally2.so 模块未被找到,

 于是查看common-auth 配置文件,发现确实有启用该模块,将其注释后进行重启登录验证,依旧无法正常登录,于是再次重启操作系统进入救援模式,在 /etc/pam.d/目录下执行了 grep -rn "pam_tally2.so" 对当前目录下的所有文件进行筛查,发现名为 login的配置文件也启用了pam_tally2.so模块,于是我们再注释掉后进行系统重启登录,此时问题得到解决。

 

小结1: 连控制台都无法正常登录的原因在于用户在操作系统内启用了一个系统内并不存在的模块,而pam_tally2.so模块是与时间限制相关的,可以控制用户在某些时间段内能有访问权限,但此模块并不存在于操作系统上,所以无法正常验证通过,即在auth.log抛出异常日志并拒绝所有用户的登录访问请求。

 

无法登录的问题解决完后,在启动ssh服务的时候发现ssh服务无法正常启动,报错信息为

 sshd -T 命令检查配置文件正确性,发现提示GLIBC_2.36依赖找不到,庆幸机器能够上网的情况下,进行了apt源更新,执行了 apt update,而后尝试安装glibc_2.36,但无法正常安装,提示缺少某些依赖啥的(忘记保留截图),接着想通过重装openssh-server尝试能否自动解决依赖包问题时,又遇到以下报错

 大概意思是告知我们,该软件包无法被安装,建议我们执行 apt --fix-broken install 来解决依赖包的问题(与一开始想安装glibc_2.36的报错类似)

 我们根据建议执行,发现自动剔除了openssh-server服务后即可正常使用apt命令安装openssh-server了,即问题解决

 

小结2:根据处理过程来看,可能用户是通过dpkg方式安装ssh deb包,但该方式并不会自动解决依赖包关系,于是还需通过apt修复依赖包关系后再安装openssh-server

 

标签:处理过程,操作系统,登录,apt,账密,无法,控制台,pam
From: https://www.cnblogs.com/Ky150/p/18334304

相关文章

  • 汇编+qemu玩转控制台打印
     有段时间开始对汇编感兴趣,也因此在写各种不同的demo,现在分享之前学习的成果,需要下载的东西有nasm和qemu-system-i386,看看枯燥的汇编能产生多大的能量。 先来复习一下通用寄存器:8位通用寄存器:AL:用于存储操作数低8位的数据寄存器。AH:用于存储操作数高8位的数据寄存器(......
  • Clickhouse服务器CPU 99.99%的处理过程
    进入服务器,查询正在执行任务的语句SELECTquery_id,user,queryFROMsystem.processes;--通过上面指令获取到进程相关信息后,可以用query_id条件kill进程KILLQUERYWHEREquery_id='67cadc87-34b2-4b81-8f8c-087485c922af'--杀死default用户下的所有进程KILLQUERY......
  • 简单的扫雷——基于C语言的控制台小游戏
    前言:  “将大象装进冰箱要几步?--打开冰箱,把大象放进去,关上冰箱。”  同样的,该扫雷游戏的编写过程也只需三步:逻辑梳理-代码实现-运行调试。本文将使用C语言来一步步剖析并完成扫雷这一案例。一.扫雷的游戏逻辑  该扫雷的游戏逻辑为:  1.生成棋盘,并布置数个......
  • 推荐一款将控制台程序部署到Windows服务的组件
    在日常开发中,有时候需要将我们的程序随着操作系统一起运行,并且无需人工干预。要实现这种效果,有很多种方法,比如:如果是桌面程序,可以设置到程序的启动项;如果是Web程序,还可以托管到IIS中,而对于控制台程序,最常见在做法是将程序部署成Windows服务,并设置成自动运行,这样当操作系统开机时,就......
  • 将控制台程序发布为Windows服务
    部署在线文档管理系统出现的问题网上找了一个很好用的在线文档管理系统https://www.iminho.me/跟着文档部署时发现了一个小问题,就是这个服务程序运行之后会一直以控制台程序的形式运行在服务器中,如果后面有其他人登入系统,不小心关闭了这个程序,网站就无法正常访问了于是想着......
  • 我在 Windows 10 上运行 Python 代码后控制台立​​即关闭
    虽然我在代码末尾使用input(),但在Windows10(IDLE之外)的窗口中输入名称后,控制台仍然立即关闭,并且我看不到结果。我该怎么做才能阻止控制台关闭?#!python3name=input('Enteryourname:')print('Hello'+name)input('pressEntertoexit:')你在代码末尾......
  • 简单的球场管理系统(仅仅是连接IDEA与数据库不涉及前端,展示主要是在控制台输入输出)
    项目内层分为七层我这里分为(beans,controller,dao,lib,service,test,util)这七层仅展示(controller层)(1)QiuChangControllerimportcom.xszx.beans.Balance;importcom.xszx.beans.Ball;importcom.xszx.beans.JBall;importcom.xszx.beans.User;importcom.xszx.dao......
  • Python 中的多行输入,支持空行并在控制台中检查“\n”
    您好,亲爱的社区,在解决某个竞赛任务时出现了问题。我解决了它,但由于输入棘手而无法交付。我在谷歌上搜索并尝试了几种找到的方法,但如果应用于此任务,它们中的每一种都有一些弱点。而且我无法完全重现所应用的输入,因为它嵌入在竞赛界面中;我可能只依赖描述。这就是为什么我......
  • 为什么代码在 IDE 和控制台上的工作方式不同?
    我有使用pyautoguidefclick_at_button(button_name,count):count_tries=0whileTrue:try:time.sleep(1)button=pyautogui.locateOnScreen(button_name,confidence=0.8)ifbutton:......
  • 在 Windows 中将 EOF 发送到 PyCharm 控制台
    我正在Windows上学习PyCharmIDE。如何将文件结束信号发送到其调试控制台?CTRL+Z不起作用。Ctrl+Z确实在PyCharm的控制台中发送EOF(文件结束)。但是,它的行为方式可能与的预期不同。在大多数控制台(例如cmd或PowerShell)中,Ctrl+Z......