閱讀901 返回首頁    go 微軟 go windows


SSH 無法遠程登錄問題的處理思路

雲服務器 ECS(後續簡稱 ECS)Linux 服務器後,首先麵臨的就是如何登錄和使用的問題。而由於服務器在雲端,所以日常運維中通常都會基於 SSH 客戶端登錄服務器進行相關操作。今天,我們就從登錄 ECS 的不同方法和使用場景講起,捋清 SSH 無法遠程登錄問題的常見原因與排查思路。

ECS Linux 服務器的登錄方式

ECS Linux 不同登錄方式示意圖

ECS Linux 不同登錄方式示意圖

如上圖所示,當前 ECS Linux 支持 3 種不同的登錄方式,其操作說明與使用場景如下:


1.管理終端(遠程連接)

  • 使用場景:當出現 ECS 啟動異常、網絡中斷或 SSH 無法正常連接等情況時,可以通過管理終端(遠程連接)功能直接連接服務器。它基於 VNC 技術,相當於在 ECS 上直連了一台虛擬的顯示器(含鼠標、鍵盤)
  • 操作說明:管理終端的使用方法,可以參閱 產品文檔
2.SSH

  • 使用場景:標準的 Linux 服務器連接方式。您可以通過各種管用的 Linux SSH 客戶端連接、登錄 ECS,進行服務器的運維和管理工作。
  • 操作說明:使用常用 SSH 客戶端連接、登錄 ECS Linux 服務器的操作方法,可以慘閱 產品文檔
3.SSH 密鑰對

  • 使用場景:基於密鑰對的免密碼登錄,降低了密碼泄露的風險,提高了操作的安全性,同時也便於服務器的批量運維。
  • 操作說明:SSH 密鑰對的使用方法,可以參閱 產品文檔

SSH 無法遠程登錄問題的常見原因與處理思路

如前所述,SSH 客戶端是 ECS Linux 服務器的主要的運維途徑。而網絡、服務器配置、SSH 服務配置等多種因素均可能會導致 SSH 連接或登錄過程出現異常。接下來會先介紹影響 SSH 連接或登錄的常見因素,然後說明此類問題的分析處理思路。

SSH 連接登錄相關因素

SSH 連接登錄相關因素示意圖

SSH 連接登錄相關因素示意圖

如上圖所示,多種因素均可能會導致客戶端通過 SSH 連接或登錄服務器出現異常,包括但不限於:

  • 客戶端軟件或軟件配置問題
  • 客戶端網絡問題
  • 中間鏈路問題
  • 雲盾、ECS 安全組或係統內 iptables 等安全配置
  • Linux 係統 PAM 安全模塊配置
  • Linux 係統環境配置問題
  • SSH 服務及參數配置問題
  • SSH 服務關聯的目錄或文件的屬性配置問題
  • SSH 服務密鑰配置問題

SSH 無法遠程登錄問題處理思路

SSH 無法遠程登錄問題處理思路示意圖

SSH 無法遠程登錄問題處理思路示意圖

如果 SSH 無法正常連接或登錄,可以參閱上圖,通過如下步驟逐一進行排查分析:

1. 檢查客戶端軟件配置與網絡配置

通過如下方法做對比分析,以判斷是否是客戶端軟件、軟件配置或客戶端網絡存在異常,導致無法正常 SSH 連接或登錄服務器:

  • 重啟家用路由器,或通過 4G 熱點共享的方式,切換到不同的網絡做對比測試
  • 基於相同賬戶,使用不同的 SSH 客戶端軟件做對比訪問測試

2. 檢查中間網絡

通過如下方法對中間網絡做判斷和對比分析,以判斷是否是中間網絡引發的異常:

  1. ping 服務器 IP ,看是否正常。比如:ping 223.5.5.5
  2. telnet <服務器 IP> ,看是否正常。比如: telnet 223.5.5.5 22
    • 正常情況下,如下圖所示,會返回服務端 SSH 軟件版本號信息: telnet SSH 端口測試正常示意圖
    • 如果不正常,則說明可能是 SSH 服務異常或被雲盾、安全組等攔截所致,則參閱後續步驟繼續排查分析。

3. 安全配置檢查

通過如下方法,對 SSH 連接相關安全因素進行排查分析:

  1. 通過 淘寶 IP 地址庫 等網站獲取本地網絡出口公網 IP 後,到雲盾控製台 查詢相關訪問是否被雲盾攔截
  2. 檢查服務器歸屬安全組規則,確認對客戶端做了訪問放行。
  3. 檢查服務器內部 iptables 等安全配置,確認對客戶端做了訪問放行。

4. SSH 服務與監聽狀態檢查

通過如下方法,檢查 SSH 服務自身運行狀態:

  1. 可以通過 管理終端 進入服務器。
  2. 通過如下指令檢查 SSH 服務運行狀態。如果服務運行正常,則會返回運行狀態及相應進程 PID:

    [root@centos ~]# service sshd status
    openssh-daemon (pid 31350) is running…
    [root@centos ~]# service sshd restart
    Stopping sshd: [ OK ]
    Starting sshd: [ OK ]
  3. 通過如下指令檢查 SSH 服務的端口監聽狀態。正常情況下會返回相應端口監聽信息:

    netstat -ano | grep 0.0.0.0:22
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0)
    • 0.0.0.0 表示監聽所有網卡
    • 如果配置僅監聽內網網卡,比如10.126.3.45:22,則隻能通過內網進行 SSH 登錄

5. SSH 登錄錯誤進一步分析

如果確認 SSH 服務及外部網絡鏈路正常,則可以通過如下方法,進一步檢查 SSH 登錄具體錯誤信息,然後結合曆史案例做相應分析和處理:

  1. 配置實時查看 SSH 服務端安全日誌:
    通過管理終端進入服務器。通過類似如下指令實時查看 SSH 服務端安全日誌:

    CentOS 服務器:tailf /var/log/secure
    Ubuntu 服務器:tailf /var/log/auth
  2. 開啟客戶端 SSH debug 模式,獲取客戶端詳細登錄日誌:
    如果客戶端是 Linux 環境,則可以通過如下指令,獲取詳細的 SSH 登錄交互日誌:

    ssh -vvv <服務器 IP>

    比如:

    [root@centos~]# ssh -vvv 192.168.0.1
    OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Applying options for *
    debug2: ssh_connect: needpriv 0
    debug1: Connecting to 192.168.0.1 [192.168.0.1] port 22.
    debug1: connect to address 192.168.0.1 port 22: Connection timed out
    ssh: connect to host 192.168.0.1 port 22: Connection timed out
    ...
  3. 參閱 曆史案例,結合前述步驟獲取的 SSH 客戶端及服務端的日誌進行對比分析和處理。

附錄:SSH 登錄原理

可以參閱如下文檔,了解 SSH 服務連接登錄的相關原理,以便知其然知其所以然,更好的支撐此類問題的排查分析:

最後更新:2017-04-27 10:00:40

  上一篇:go Redis的三種啟動方式
  下一篇:go Leveraging IOT Data in the Cloud: Why your business is more at risk than you think