朋友的一台Centos服务器,所有的网站无法登录,确保用户名和密码都正确。连接SSH,提示Access Denied!
怀疑是服务器被黑了,但是一想那么多网站都登录不进去,也不太可能。
无奈,本地用root账户登录服务器,发现可以登录。
然后怀疑是磁盘满了,于是df -Th,发现各磁盘可用剩余空间都在50%以上。
不管了,先让ssh可以登录吧,检查ssh配置文件
vi /etc/ssh/sshd_config
发现配置项是正确的
PermitRootLogin yes
网上查资料,说把配置文件里的AllowUsers 项目里加一个root,于是在vi里搜索这个配置项
/AllowUser,没找到。看来又是某些“科学家”杜撰出来的方法。
服务器上安装了云锁,有登录保护功能,于是去关闭
但还是登录不上,而且企鹅怪的是,关闭登录保护功能后,再次重新登录云锁,登录保护功能还是开启的。
于是陷入了困境。
奇怪了,难道文件权限出问题了?
cd /home
touche test.txt
报无法创建文件,设备空间不足!
扯淡,磁盘空间剩余那么多怎么会设备空间不足呢?
难道是ext4文件系统Inodes满了?
于是执行
df -i
发现根分区Inodes占用100%
头疼了。看看有没有开计划任务
crontab -l
果然,有计划任务,估计是计划任务执行失败,日志堆满了服务器空间。
验证猜想,看看不是有大量垃圾文件占用了var目录
for i in /var*;do echo $i; find $i | wc -l; done
执行这个命令,可能要等很久,请耐心等待。
执行完成后,发现/var/spool/下面有180多万个文件。
进入spool文件夹
cd spool
for i in /var/spool/*;do echo $i; find $i | wc -l;done
发现/var/spool/clientmqueue下有180多万个文件
到这,算是找到原因了,那删掉里面的文件不就好了吗?,于是,想先看看这里面是什么文件:
ll clientmqueue
发现卡主不动了,无奈,强制重启服务器
重新进入这个文件夹,直接 rm -rf *
报参数太长错误,估计是文件太多了,也显示不出来,也不能删除。
这可如何是好?
find clientmqueue/* -type f -exec rm {} \;
发现命令依然卡住。但是过一会儿之后按下ctrl+C,然后再次执行df -i查看,发现有被释放的Inodes,看啦是可以的,只是一直卡在那里不动。那行了。
重新执行:
find clientmqueue/* -type f -exec rm {} \;
然后,回去睡觉了。
第二天:
再次本地登录root账户,df -i,发现Inodes占用只有1.8%,但是ssh root依然不能登录!但服务器上的网站,可以登录了。
于是想着去编辑ssh的配置文件:
vi /etc/ssh/sshd_config
配置项依然正确
PermitRootLogin yes
无奈,再次登录云锁,关掉登录保护功能
ssh登录,居然成功了!
然后再次打开云锁的登录保护功能,居然也能够登录了!到此,一切恢复正常。
总结原因:
服务器Inodes耗尽,导致ssh无法登录,可能ssh登录也要创建一些文件吧,
同时,也导致网站不能登录。
朋友说在我来之前,改过ssh配置文件,但貌似文件写入没有成功,卡在了18%的地方。
因为Inodes耗尽,导致云锁的登录防护功能同样出现问题,并且无法成功关闭登录保护功能。
当我们删除多余的垃圾文件之后,再次关闭并重新打开云锁的登录保护功能,ssh就恢复正常了。
为了防患于未然,检查下服务器的计划任务
crontab -l
发现有个没用的计划任务
crontab -d
把没用的计划任务,删掉。
搞定了。
合肥网站制作
如需协助,有偿服务微信号:Mhitsoft
联系我时,请说是CSDN上看到的。