Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

SSH 連線 Linux 主機緩慢?排除 DNS 反向解析延遲的完整指南

編輯:關於 Linux

在區域網路環境下,雖然 ping 目標主機延遲僅在微秒級,但使用 SSH 連線卻需等待 10–30 秒才出現密碼提示,這類「連得上、卻很慢」的現象最常見的成因是 SSH 服務端預設開啟 GSSAPI 認證與 DNS 反向解析。當客戶端發起連線時,伺服器會嘗試對客戶端 IP 做反向查詢(PTR 記錄),若 DNS 伺服器回應緩慢或無回應,連線流程便會卡在驗證協商階段。

快速診斷:啟用詳細模式觀察卡點

在客戶端執行 ssh -v user@host,若輸出中出現類似 debug1: Next authentication method: gssapi-with-mic 並隨後顯示 Cannot determine realm for numeric host address,即可確認是 GSSAPI 與 DNS 反解導致延遲。

解決方案:修改伺服器端 /etc/ssh/sshd_config

# 關閉 GSSAPI 認證
GSSAPIAuthentication no
GSSAPICleanupCredentials no

# 關閉 DNS 反向解析(關鍵)
UseDNS no

修改完成後重啟 SSH 服務:

sudo systemctl restart sshd   # CentOS/RHEL 7+、Ubuntu 16.04+
# 或
sudo service ssh restart      # 舊版系統

驗證成效

再次執行 ssh -v user@host,密碼提示應在 1–2 秒內出現,且 debug 輸出不再顯示 GSSAPI 相關訊息。

補充:客戶端也可預先規避

若無權修改伺服器設定,可在客戶端 ~/.ssh/config 加入:

Host *
    GSSAPIAuthentication no

並確保 /etc/hosts 含有目標主機的 IP–主機名對應,減少 DNS 查詢。

常見誤區

  • 只改客戶端:若伺服器仍開啟 UseDNS yes,伺服器端仍會做反解,延遲依然存在。
  • 誤以為是網路頻寬問題:實際上是名稱解析阻塞,而非資料傳輸瓶頸。

採用上述設定後,區域網 SSH 連線通常可從「十秒級」降至「秒級甚至毫秒級」,顯著提升運維效率。

Copyright © Windows教程網 All Rights Reserved