今天想在VPS上装一个monit作监控。没想到出了点问题折腾了差很少一天。node
问题的起源是monit依赖于LinuxPAM。这个东西我之前是一点都没怎么了解过,还觉得只是个普通的依赖库,因此就没怎么注意。没想到一时的大意白白浪费了一天时间。linux
在安装完PAM后,monit顺利地安装成功了。但是我忽然发现,ssh不能连到VPS了!我觉得是我本地的xshell有问题,就把当前的链接断掉(为何要断啊T_T),试着连了连其余的服务器。试了几个均可以,就是VPS不行。因而就开始了断断续续差很少一天的折腾...nginx
尝试了重启vps,重置root密码等,都是不行。联系了linode的客服,那边的技术客服建议先重置root密码,再用LISH(linode的一种shell)链接。我试了几回仍是没成功。后来用一个录屏软件,把登陆的信息录了,再慢速回放才看清,登陆有一个迅速闪掉的报错信息。shell
这下终于有点眉目了。以前都不知道是由于PAM的问题。服务器
在与客服沟通以后,客服建议用进"Rescue Mode"。这个模式有点像WinPE,会登入一个完整小巧的linux shell里,而后经过mount读写vps中的磁盘文件。就这样摸索着修改文件,改了得有十屡次。每次从Rescue Mode里出来再重启VPS进行登陆测试。PAM的配置老是不对。最后终于经过修改/etc/ssh/sshd_config
中的UsePAM no
,成功登陆了ssh。登陆以后想改一下root密码,由于刚才改了半天,想改回从前的密码。passwd
了一下,又见到了那个PAM failure的错误。网上查了查,误打误撞地添加了/etc/pam.d/other文件。session
#%PAM-1.0 #auth required /lib/security/$ISA/pam_deny.so #account required /lib/security/$ISA/pam_deny.so #password required /lib/security/$ISA/pam_deny.so #session required /lib/security/$ISA/pam_deny.so auth required pam_unix.so account required pam_unix.so password required pam_unix.so session required pam_unix.so
启动了一堆软件和应用。至此,VPS才完成恢复。急忙写了一个备份整站的脚本,把网站和nginx的配置信息上传到了百度盘。额,我想我是玩不起PAM了...ssh
话说回来,linode客服的神速回复和专业意见还真是值得起这价钱。测试