今天想在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客服的神速回復和專業意見還真是值得起這價錢。測試