在運維工程師的平常工做中,常常須要登陸到服務器上對應用部署和維護,配置修改是很常規操做。可是在平常運維工做中,常常也會遭遇「滑鐵盧」,當出現沒法遠程鏈接服務器的時候,咱們須要沉着冷靜,耐心分析報錯的癥結,方能更好的定位和排除問題。python

今天百曉生就阿里雲服務器ECS沒法遠程鏈接的問題,分享一波運維必備的問題排查方法,認同小編的童鞋,文末【點贊+再看】哦~安全
說明:如下操做在CentOS 6.5 64位操做系統中進行過測試服務器
檢查CPU負載、帶寬及內存使用狀況
確認是否存在CPU負載太高的狀況網絡
- 若是在某個時間段CPU負載太高,可能致使遠程鏈接失敗,建議您查詢程序或者實例資源是否不知足現有要求。
- 若是不存在CPU負載太高的狀況,則繼續下一步檢查。
確認公網帶寬是否不足運維
沒法遠程鏈接多是公網帶寬不足致使的,具體排查方法以下:ssh
- 登陸ECS管理控制檯。
- 找到該實例, 單擊管理進入實例詳情頁面,查看網絡監控數據。
- 檢查服務器帶寬是否爲「1k」或「0k」。若是購買實例時沒有購買公網帶寬,後來升級了公網帶寬,續費的時候沒有選擇續費帶寬,帶寬就會變成「1k」。
確認內存是否不足測試
遠程鏈接輸入用戶密碼登陸後,不能正常顯示桌面直接退出,也沒有錯誤信息。這種狀況多是服務器內存不足致使的,須要查看一下服務器的內存使用狀況。具體操做以下:阿里雲
- 使用控制檯遠程鏈接功能登陸到Linux實例。
- 查看內存使用狀況,確認內存不足後,再進行處理。
客戶端排查
客戶端沒法正常登陸時,先使用不一樣的SSH客戶端基於相同帳戶信息進行登陸測試。若是能正常登陸,則判斷是客戶端配置問題,須要對客戶端配置或軟件運行狀況作排查分析。關於如何使用SSH客戶端登陸Linux實例,您能夠參見遠程鏈接Linux實例。雲計算
步驟一:使用管理終端登陸實例spa
不管何種緣由致使沒法遠程鏈接實例,請先嚐試用阿里雲提供的遠程鏈接功能進行鏈接,確認實例還有響應,沒有徹底宕機,而後再按緣由分類進行故障排查。
- 錄雲服務器管理控制檯,單擊左側導航欄中的實例,而後在目標實例右側單擊遠程鏈接。
- 在首次鏈接或忘記鏈接密碼時,單擊修改遠程鏈接密碼,修改遠程鏈接的密碼。
- 而後經過遠程鏈接密碼鏈接實例。
步驟二:檢查客戶端本地網絡是否異常
確認是否存在用戶本地沒法鏈接外網的故障。
- 若是存在,則檢查網卡驅動,若是存在異常,則從新安裝。使用管理終端登陸實例,查看/etc/hosts.deny文件,查看是否存在攔截IP,若是存在則刪除此IP配置便可。
- 若是不存在,則繼續下一步檢查。
步驟三:重啓實例
在確保登陸密碼正確的狀況下,確認以前是否曾重置過密碼。檢查重置實例密碼後是否未重啓實例,若是存在實例密碼修改記錄,但無重啓實例記錄,則參考如下操做步驟重啓實例:
- 登陸ECS管理控制檯,單擊左側導航欄中的實例。
- 在頁面頂部的選擇對應的地域,目標實例右側單擊更多>實例狀態>重啓,再單擊肯定便可。
中間網絡
中間網絡包括網絡檢查和端口檢查。
網絡檢查
沒法正常遠程鏈接Linux實例時,須要先檢查網絡是否正常。
- 用其餘網絡環境中,不一樣網段或不一樣運營商的電腦鏈接對比測試,判斷是本地網絡問題仍是服務器端的問題。若是是本地網絡問題或運營商問題,請聯繫本地IT人員或運營商解決。若是是網卡驅動存在異常,則從新安裝。排除本地網絡故障後進行下一步檢查。
- 在客戶端使用ping命令測試與實例的網絡連通性。
1)網絡異常時,請參見網絡異常時如何抓取數據包進行排查。
2)當出現ping丟包或ping不通時,請參見使用ping命令丟包或不通時的鏈路測試方法進行排查。
3)若是出現間歇性丟包,ECS實例的網絡一直處於不穩定狀態時,請參見使用ping命令測試ECS實例的IP地址間歇性丟包進行解決。
4)系統內核沒有禁ping的狀況下,使用ping命令測試ECS服務器,發現網絡不通,請參見Linux系統的ECS中沒有禁PING卻PING不通的解決方法。
端口檢查
網絡檢查正常後,進一步檢查端口是否正常。
1. 使用管理終端登陸實例,執行以下命令,編輯SSH配置文件。
vi /etc/ssh/sshd_config2. 找到「#port 22」所在行,檢查默認端口22是否被修改,且前面的「#」是否刪除,若是沒有刪除,能夠把前面的「#」刪除,而後將22改成其它的端口,再保存退出便可。
說明:服務監聽能使用的端口範圍爲0到65535,錯誤配置監聽端口會致使遠程桌面服務監聽失敗
3. 執行以下命令,重啓SSH服務。
/etc/init.d/sshd restart說明:也可執行service sshd restart命令,重啓SSH服務。
4. 使用Python自帶的Web服務器建立臨時的監聽端口進行測試。
python -m SimpleHTTPServer [$Port]
5. 若是ECS安全組規則中未放行修改後的端口號,須要將修改後的端口號添加到ECS安全組規則中。
說明:ECS的安全組規則中默認放行22端口。修改了遠程桌面的端口後,須要在安全組規則中放行修改後的端口號。
6. 經過上一步獲取的端口,參考以下命令,進行端口測試,判斷端口是否正常。
telnet [$IP] [$Port]
說明:
- [$IP]指Linux實例的IP地址。
- [$Port]指Linux實例的SSH端口號。
系統顯示相似以下,例如執行telnet 192.168.0.1 22命令,正常狀況下,系統會返回服務端中SSH的軟件版本號。

安全組檢查
檢查安全組配置,是否容許遠程鏈接的端口。
- 參見查詢安全組規則,查看安全組規則。若是遠程鏈接端口沒有進行配置,則參見Linux實例啓用SSH服務後設置對應的安全組策略配置。
- 確認是否存在沒法ping通ECS實例,在排除Iptables和網卡IP配置問題且回滾系統後,仍然沒法ping通。多是ECS實例安全組默認的公網規則被刪除,則須要從新配置ECS實例的安全組公網規則。若是不存在,則繼續下一步驟檢查。
關注百曉生,笑談雲計算
