閱讀901 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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