本文主要介紹無法遠程登錄Linux實例的排查方法。
問題原因
下圖為SSH遠程登錄的關聯因素示意圖,由此可見,SSH遠程登錄失敗的可能原因較多。如PAM安全框架、安全組、SSH配置等。請您根據實際情況,通過相應的排查方法,排查并解決無法遠程連接Linux實例的問題。
快速登錄Linux實例
如果您遇到緊急情況,需要盡快登錄Linux實例,請參見以下操作步驟,先檢查ECS實例的狀態,然后通過云助手向Linux實例發送命令或通過VNC登錄實例,具體步驟如下:
步驟一:檢查ECS實例狀態
無論何種原因導致無法遠程登錄ECS實例,請先檢查實例的狀態。只有當ECS實例為運行中狀態時,才能對外提供業務訪問。檢查步驟如下:
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頁面左側頂部,選擇目標資源所在的資源組和地域。
步驟二:通過VNC登錄ECS實例
如果云助手無法使用或者無法滿足您的使用需求,您還可以通過阿里云VNC工具進行遠程登錄,使用方法如下:
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頁面左側頂部,選擇目標資源所在的資源組和地域。
在實例列表頁面,找到需要連接的實例,在操作列中,單擊遠程連接。
在彈出的遠程連接對話框中,單擊展開其他登錄方式,然后單擊通過VNC遠程連接對應的立即登錄。
登錄實例操作系統。
輸入登錄用戶(例如root、ecs-user),然后按
Enter
鍵。輸入實例登錄密碼,然后按
Enter
鍵。說明登錄Linux實例時界面不會顯示密碼的輸入過程,請您確保輸入的密碼正確。
步驟三:通過云助手向Linux實例發送命令
您可以嘗試通過阿里云云助手向Linux實例發送命令,云助手的使用步驟如下:
沒有明確的報錯信息
在遠程連接失敗時,如果您沒有收到系統返回的報錯信息,并且ECS實例是運行中狀態,然后再根據以下步驟進行排查:
步驟一:使用阿里云Workbench工具測試遠程登錄
通過阿里云提供的Workbench工具進行遠程登錄,Workbench工具在遠程登錄出現異常時會返回具體的錯誤信息及解決方案。測試步驟如下:
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頁面左側頂部,選擇目標資源所在的資源組和地域。
在實例列表頁面,找到需要連接的實例,單擊對應操作列下的遠程連接。
在彈出的遠程連接對話框中,單擊通過Workbench遠程連接對應的立即登錄。
測試是否可以遠程登錄。
Workbench工具將自動填充登錄目標實例所需的基本信息,請確認基本信息的正確性并輸入登錄的用戶名和認證信息。并根據以下結果進行處理:通過Workbench遠程登錄Linux實例的具體操作,請參見通過Workbench遠程登錄Linux實例。
如仍然無法登錄,Workbench工具會返回錯誤提示和解決方案,請根據系統提示進行處理。處理完畢后重新使用Workbench工具進行遠程登錄測試。為了便于您解決問題,列舉Workbench工具使用時常見的異常問題: Workbench遠程連接問題(Linux)
如可以通過Workbench工具正常登錄,說明目標實例上的SSH服務正常運行,即排除SSH服務端異常的可能性,繼續執行步驟二:檢查網絡進行排查。
步驟二:檢查網絡
無法正常遠程連接Linux實例時,需要先檢查網絡是否正常。
用其他網絡環境中,不同網段或不同運營商的電腦連接對比測試,判斷是本地網絡問題還是服務器端的問題。
如果是本地網絡問題或運營商問題,請聯系本地IT人員或運營商解決。
如果是網卡驅動存在異常,請重新安裝。
在本地客戶端使用ping命令測試與實例的網絡連通性。
網絡異常時,請進行抓取數據包進行分析,具體操作,請參見網絡異常時如何抓取數據包。
當出現ping丟包或ping不通時,可以通過
tracert
或mtr
等工具進行鏈路測試來判斷問題根源。具體操作,請參見使用ping命令丟包或不通時的鏈路測試方法。如果出現間歇性丟包,ECS實例的網絡一直處于不穩定狀態時,可能是病毒導致。具體操作,請參見使用ping命令測試ECS實例的IP地址間歇性丟包
系統內核沒有禁ping的情況下,使用ping命令測試ECS服務器,發現網絡不通,可能是服務器系統內部防火墻對客戶端進行了drop策略。
具體操作,請參見Linux系統的ECS中沒有禁ping卻ping不通的解決方法。
步驟三:檢查端口和安全組
檢查安全組配置是否允許遠程連接的端口。
登錄ECS管理控制臺。
在左側導航欄,選擇 。
在頁面左側頂部,選擇目標資源所在的資源組和地域。
在實例列表頁面,單擊對應的實例ID。
在安全組頁簽下,單擊安全組操作列的管理規則。
在安全組規則頁面,您可以選擇以下任意一種方式添加安全組規則,具體操作,請參見添加安全組規則。
方式一:快速添加安全組規則
授權策略:允許
端口范圍:SSH(22)
授權對象:0.0.0.0/0(代表所有IP訪問)
方式二:手動添加安全組規則
授權策略:允許
優先級:1(代表安全規則中優先級最高,數字越小優先級越高)
協議類型:自定義(TCP)
端口范圍:SSH(22)
授權對象:0.0.0.0/0(代表所有IP訪問,也可根據需要,自定義設置授權對象)
使用以下命令,進行端口測試,判斷端口是否正常。
telnet [$IP] [$Port]
說明[$IP]指Linux實例的IP地址。
[$Port]指Linux實例的RDP端口號。
系統顯示類似如下,比如執行
telnet 192.168.0.1 22
命令,正常情況下返回結果類似如下。Trying 192.168.0.1 ... Connected to 192.168.0.1. Escape character is '^]'
如果端口測試失敗,請參見使用ping命令正常但端口不通時的端口可用性探測說明進行排查。
步驟四:檢查CPU負載、帶寬及內存使用情況
無法正常遠程連接Linux實例時,可能是因為CPU負載、帶寬不足或內存不足導致。
根據是否存在CPU負載過高情況,選擇相應操作。
存在CPU負載過高情況。
若應用程序有大量的磁盤訪問、網絡訪問行為、高計算需求,CPU負載過高是正常結果。建議您升配實例規格來解決資源瓶頸問題,具體操作,請參見升降配方式概述。
說明CPU負載過高的解決方法,請參見Linux系統CPU負載的查詢和案例分析。
不存在CPU負載過高情況,請繼續下一步排查。
排查是否存在公網帶寬不足問題。
無法遠程連接可能是公網帶寬不足導致的,具體排查方法如下。
排查是否存在內存不足問題。
遠程連接Linux實例后,不能正常顯示桌面并直接退出,也沒有錯誤信息提示。這種情況可能是服務器內存不足導致,需要檢查服務器的內存使用情況。具體操作如下。
使用VNC方式登錄Linux實例。
具體操作,請參見通過密碼認證登錄Linux實例。
查看內存使用情況,如果存在內存不足情況,建議您升配實例規格來解決資源瓶頸問題,具體操作,請參見升降配方式概述。
存在明確的報錯信息
遠程登錄失敗時,系統通常會返回報錯信息。您可以根據報錯信息,快速定位問題原因及解決方案。
PAM安全框架
Linux系統的PAM安全框架可以加載相關安全模塊,對云服務器的賬戶策略、登錄策略等進行訪問控制。如果相關配置存在異常,或觸發了相關策略,就可能會導致SSH登錄失敗。根據不同報錯信息,可參見如下常見案例進行解決:
Linux實例系統環境配置
Linux內的系統環境,例如中毒、賬戶配置、環境變量配置等,如果出現異常,也可能會導致SSH登錄失敗。根據不同報錯信息,可參見如下常見案例進行解決:
SSH服務及參數配置
SSH服務的默認配置文件為/etc/ssh/sshd_config
。配置文件中的相關參數配置異常,或啟用了相關特性或策略,也可能會導致SSH登錄失敗。根據不同報錯信息,可參見如下常見案例進行解決:
SSH服務關聯目錄或文件配置
SSH服務基于安全性考慮,在運行時,會對相關目錄或文件的權限配置、屬組等進行檢查。過高或過低的權限配置,都可能會引發服務運行異常,進而導致客戶端登錄失敗。根據不同報錯信息,可參見如下常見案例進行解決:
SSH服務密鑰配置
SSH服務采用非對稱加密技術,對所傳輸的數據進行加密。客戶端及服務端會交換和校驗相關密鑰信息的有效性。根據不同報錯信息,可參見如下常見案例進行解決: