云主機Linux SSH無法遠程登錄問題排查指引
對于云主機Linux,SSH 客戶端是主要的運維途徑。而管理終端可以用于臨時運維,或者在客戶端登錄出現異常時,用于問題排查分析。本文就 SSH 無法登錄的可能原因及排查方法進行說明。
無法登錄常見現象及處理辦法
針對前述不同因素,常見的問題現象及處理辦法說明如下:
客戶端問題
中間網絡問題
PAM?安全框架相關問題
Linux?系統環境配置問題
SSH?服務及參數配置問題
SSH?服務關聯目錄或文件配置問題
SSH?服務密鑰配置問題
客戶端問題
客戶端無法正常登錄時,建議先使用不同的 SSH 客戶端基于相同賬戶信息進行登錄測試。如果能正常登錄,則判斷是客戶端配置問題,需要對客戶端配置或軟件運行情況做排查分析。
Linux 服務器的登錄過程說明,可以參閱產品文檔:登錄實例。
中間網絡問題
客戶端無法正常通過 SSH 連接服務器時,先通過如下方式進行 telnet 端口測試,判斷是否是中間網絡異常所致:
telnet <服務器 IP>
正常情況下,如下圖所示,會返回服務端 SSH 軟件版本號:
如果端口測試失敗,則可以參閱如下文檔針對客戶端到服務器之間的網絡做進一步排查分析:
ping 丟包或不通時鏈路測試說明
能 ping 通但端口不通時端口可用性探測說明
網絡異常時抓包操作說明
PAM 安全框架相關問題
Linux 系統的 PAM 安全框架,可以加載相關安全模塊,對服務器的賬戶策略、登錄策略等進行訪問控制。如果相關配置存在異常,或觸發了相關策略,就可能會導致 SSH 登錄失敗。與PAM 安全框架相關的常見案例如下:
SSH?登錄時出現如下錯誤:pam_listfile(sshd:auth): Refused user root for service sshd
SSH?登錄時出現如下錯誤:requirement "uid >= 1000" not met by user "root"
SSH?登錄時出現如下錯誤:Maximum amount of failed attempts was reached
SSH?登錄時出現如下錯誤:login: Module is unknown
Linux 系統環境配置問題
Linux 內的系統環境(比如中毒、賬戶配置、環境變量配置等)如果出現異常,也可能會導致 SSH 登錄失敗。與 Linux 系統環境相關的常見案例如下:
SSH?登錄時出現如下錯誤:ssh_exchange_identification: read: Connection reset by peer
中毒導致?SSH?服務運行異常,出現如下錯誤:fatal: mm_request_send: write: Broken pipe
SSH?服務啟動時出現如下錯誤:main process exited, code=exited
SSH?連接時出現如下錯誤:pam_limits(sshd:session):could not sent limit for ‘nofile’
SSH?連接時出現如下錯誤:pam_unix(sshdsession) session closed for user
SSH?連接時出現如下錯誤:error Could not get shadow infromation for root
SSH 服務及參數配置問題
SSH 服務的默認配置文件為 /etc/ssh/sshd_config。配置文件中的相關參數配置異常,或啟用了相關特性或策略,也可能會導致SSH 登錄失敗。與 SSH 服務及參數配置相關的常見案例如下:
SSH?登錄時出現如下錯誤:Disconnected:No supported authentication methods available
SSH?登錄時出現如下錯誤:User root not allowed because not listed in
SSH?登錄時出現如下錯誤:Permission denied, please try again
SSH?登錄時出現如下錯誤:Too many authentication failures for root
SSH?服務啟動時出現如下錯誤:error while loading shared libraries
SSH?服務啟動時出現如下錯誤:fatal: Cannot bind any address
SSH?服務時出現如下錯誤:Bad configuration options
云服務器 Linux SSH?啟用?UseDNS?導致連接速度變慢
SSH 服務關聯目錄或文件配置問題
SSH 服務基于安全性考慮,在運行時,會對相關目錄或文件的權限配置、屬組等進行檢查。過高或過低的權限配置,都可能會引發服務運行異常,進而導致客戶端登錄失敗。與 SSH 服務關聯目錄或文件配置相關的常見案例如下:
SSH?登錄時出現如下錯誤:No supported key exchange algorithms
SSH?服務啟動時出現如下錯誤:must be owned by root and not group or word-writable
SSH 服務密鑰配置問題
SSH 服務采用非對稱加密技術,對所傳輸的數據進行加密。客戶端及服務端會交換和校驗相關密鑰信息的有效性。與 SSH 服務密鑰配置相關的常見案例如下:
SSH?登錄時出現如下錯誤:Host key verification failed
云服務器?Linux SSH?連接交互過程簡介
云服務器?Linux SSH?基于密鑰交換的自動登錄原理簡介及配置說明
SSH 無法登錄問題排查思路
如果根據前述問題場景進行排查和處理后,還是無法正常登錄。則建議按照如下步驟進行逐一排查分析:
多客戶端對比測試:
使用不同的 SSH 客戶端及 管理終端 做對比訪問測試,以判斷是否是個別客戶端自身配置或軟件運行問題所致。如果管理終端登錄正常,也可以通過管理終端進入系統做進一步排查分析。
網絡測試:
參閱前文中間網絡問題小節相關說明,測試網絡連通性。
服務端日志獲取:
通過 管理終端 進入服務器。然后在客戶端重新訪問測試時,通過如下指令同步獲取服務端相關日志信息:tailf /var/log/secure
客戶端日志獲取:
如果客戶端是 Linux 環境,則可以通過如下指令,獲取詳細的 SSH 登錄交互日志:
ssh -vvv <服務器 IP>比如:[root@centos~]# ssh -vvv 192.168.0.1OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Applying options for debug2: ssh_connect: needpriv 0debug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.debug1: connect to address 192.168.0.1 port 22: Connection timed outssh: connect to host 192.168.0.1 port 22: Connection timed out
SSH 服務運行狀態檢查:
通過 管理終端 登錄服務器,然后通過如下方式檢查 SSH 服務運行狀態:
檢查服務運行狀態:
通過如下指令檢查服務運行狀態。正常情況下會返回運行狀態及相應進程 PID:
[root@centos ~]# service sshd statusopenssh-daemon (pid 31350) is running…
[root@centos ~]# service sshd restartStopping sshd: [ OK ]
Starting sshd:[ OK ]
檢查服務監聽狀態:
通過如下指令檢查服務監聽狀態。正常情況下會返回相應端口監聽信息:
netstat -ano | grep 0.0.0.0:22tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN off (0.00/0/0)
127.0.0.1 登錄測試:
通過 管理終端 登錄服務器,然后 ssh 127.0.0.1。如果能正常登錄,則推斷是系統防火墻配置異常,導致客戶端登錄失敗。