SSH服務器無法登錄的故障排查
日期:2017/2/8 10:29:21   編輯:關於服務器
開篇之前,先拉拉家常,交代一下人物背景前因後果:
我出身教師家庭,踏踏實實從事了多年的技術工作後,命運又把我安排在了講台上。不同的是,我所在的講台不是學校講台,我的學生也不是天真懵懂的校園孩子。我站在了IT培訓的講台上,我的學生眼睛裡閃爍著求知的光芒。
創建培訓公司以來,忙碌於教學,雖然很想上網跟大家交流,但總歎分身乏力。我的好友白璐因為經常在博客裡跟大家交流,幫助了不少迷茫的IT人,已經是大半個紅人兒了,呵呵。我在為他高興之余也頗為慚愧,我們同樣在做著傳道授業解惑的事,但他不僅僅教育了自己課堂上的學生,還通過互聯網引導和影響了更多的人。前幾天博客總管小廢物告訴我,新版的專家博客展示區上線了,我有幸忝列其中,深感厚愛之余更覺應該有所回報,盡量抽出時間更新的博客。最近打算寫“網絡工程師課堂系列”,總結課堂上一些比較典型的案例,與大家分享交流。
“服務器的正常運轉對一個企業來說非常重要,當它出現問題的時候,我們要第一時間登錄服務器解決問題,盡可能把故障時間縮到最短。”底下同學們聚精會神並點頭如搗蒜。
“那好,如何才能安全的登錄服務器呢?管理服務器和我們日常練習是不同的,我們需要保證服務安全穩定不間斷的運行。一般來說服務器是托管在IDC機房的,機房為我們的服務器提供物理條件:網絡鏈路、空間溫度、安全防范等。但是我們在維護的時候安全性也是不容忽視的,調試cisco設備的時候我們常用telnet來登錄,但對於管理linux服務器來說telnet登錄方式並不安全……”
就在這時,一位同學驚呼:“老師,我的機器登錄不上去了~~~@...!!@#$@#”緊接著就是學生派的一頓貌似理論的分析:“是不是網卡設置錯了?是不是網線沒有插?是不是我的ssh客戶端出了問題?是不是xxxx?是不是yyyy?”最後說了一句,是不是我的鍵盤出現混亂了?拜托~~~!
“在解決問題的時候,分析是要有條理性的,不要用“是不是”這個詞來胡亂猜測”,我苦口破心的說。“老師,可不可以用‘會不會’來比喻啊???”學生用期待的眼神看著我說。我當場倒地,不省人事狀。
不,不能倒下!學生們還期待著呢,我搖搖晃晃站起來了,本來想拍拍身上的灰塵,結果發現地好干淨,呵呵,我們學習的環境就像公司工作環境一樣,每天都有專人打掃的。整理心情,很確定的告訴那位同學:“對不起,也不可以!判斷問題是要有一定的邏輯性的,不要胡亂判斷好不好!”
我在黑板上一邊寫著一邊說“判斷此類問題,要先要進行一些基本的排查工作,利用排除法確定問題,這樣才簡單有效啊!”看看我寫的內容吧,鏡頭轉向黑板,謝謝。
分析與排除:ssh客戶端登錄服務器利用的是端口和IP,那我們遇到此類服務不可鏈接的問題時候,遵循一下步驟
1、首先要確定發生問題之前服務是否正常?相同網段的服務器是否能登錄?(排除網絡問題,發現問題檢查網絡設備或者跟相關部門聯系)
2、ping本機回環地址是否通?(排除本機硬件問題)
3、配置文件有沒有被改動過?查看/var/log目錄下的日志和history操作記錄(排除人為誤操作)
4、排除前面的假設後,再檢查linux系統的服務進程和端口。利用兩個命令來進行判斷:
分別是ps –ef | grep sshd和netstat –anp| grep sshd;
Ps –ef | grep sshd 會顯示“sshd”服務進程相關記錄
netstat –anp | grep sshd 會顯示出sshd所用的端口.
之所以這樣檢查,是因為很多人可能會忘記修改過/etc/ssh/sshd_config的port的值,以至於使用ssh工具的時候還是使用22端口登錄,導致登錄不上去。
5、如果沒有發現服務進程和端口,利用service sshd restart 來重新啟動服務(到這個時候基本會解決問題)
6、服務啟動不成功,按照出錯提示和/var/log/messages的日志排查問題