如何解決 SSH 卡在“建立與服務器的連接”上的問題

已發表: 2025-12-21

Secure Shell (SSH) 是遠程管理和管理服務器的關鍵組件。在 SSH 客戶端中卡在“建立與服務器的連接”消息可能會令人沮喪,尤其是在處理生產環境或時間敏感的配置時。此問題可能看起來很模糊,但有多種潛在原因 — 從網絡配置錯誤到目標服務器上的 SSH 守護程序問題。了解如何有效地排除 SSH 連接故障將為您節省時間和不必要的壓力。

長話短說

如果您的 SSH 會話卡在“建立與服務器的連接”上,請首先驗證目標主機的可用性和網絡連接。確認 SSH 服務正在目標上運行並偵聽正確的端口。然後檢查您的本地防火牆、DNS 解析或 VPN 設置。使用詳細的 SSH 日誌記錄 (-vvv) 在連接嘗試期間獲得更多信息。

1. 確認基本網絡連接

在深入研究配置和日誌文件之前,請從最簡單的檢查開始:

  • Ping 服務器:使用ping來驗證主機是否可達。
  • Traceroute 或 MTR:這可以幫助確定您和 SSH 服務器之間的某個網絡躍點是否存在連接阻塞。
  • Telnet 或 Netcat:嘗試訪問端口 22(或自定義 SSH 端口)以確認其可訪問: telnet your.server.ip 22nc -zv your.server.ip 22

如果服務器沒有響應 ping 或拒絕 SSH 端口,則可能是主機已關閉、網絡阻塞流量,或者 SSH 未在服務器上正常運行。

2. 使用詳細模式獲得洞察

SSH 提供不同級別的詳細信息,可以幫助查明連接過程中發生延遲的位置。使用-v-vv-vvv選項獲取更詳細的輸出:

 ssh -vvv [email protected]

詳細模式可以提供幫助的常見位置包括:

  • 檢查 DNS 解析
  • 確定連接嘗試是否在特定步驟超時
  • 識別密鑰交換或身份驗證錯誤

3. 防火牆和安全組設置

很多時候,防火牆或云安全設置是罪魁禍首。您應該檢查客戶端和服務器端:

  • 客戶端防火牆:確保允許端口 22(或您的自定義 SSH 端口)上的傳出連接。
  • 服務器端防火牆:iptablesufw等工具可能會丟棄入站 SSH 流量。
  • 雲安全組:在 AWS、GCP 或 Azure 環境中,檢查安全組是否允許您的 IP 和正確的端口。

如果您的連接在“建立連接”處掛起,則可能表明數據包正在被靜默丟棄,而不是主動拒絕。

4.檢查服務器上的SSH守護進程

如果您可以通過其他方式訪問服務器(例如,通過控制台、串行訪問或其他遠程會話),請直接登錄並驗證 SSH 服務:

 sudo systemctl status sshd
 sudo netstat -tulpn | grep ssh

注意事項:

  • 該服務是否處於活動狀態並正在運行?
  • 它是否正在偵聽預期的 IP 和端口?
  • 最近對 SSH 配置文件(通常是/etc/ssh/sshd_config)的更改是否可能導致失敗?

如果 SSH 最近重新配置或重新啟動不當,該進程可能會崩潰或對傳入連接無響應。

5. DNS解析問題

如果您使用主機名而不是 IP 地址進行連接,請確保 DNS 正確解析:

 nslookup your.server.domain
 dig your.server.domain

如果無法解析主機名,DNS 設置問題可能會延遲或中斷您的 SSH 連接。另外,請驗證路由器或 VPN 中的/etc/resolv.conf或 DNS 設置。

6. TCP 包裝器和基於主機的限制

在某些 Linux 發行版上,TCP 包裝器(通過/etc/hosts.allow/etc/hosts.deny控制)可以限制 SSH 訪問:

  • 確保/etc/hosts.deny不包含類似sshd: ALL
  • 使用 sshd 在/etc/hosts.allow中明確允許您的 IP sshd: your.ip.address

儘管 TCP 包裝器在很大程度上已被棄用,但遺留系統可能仍在使用它們,而日誌中沒有明確的指示。

7. VPN 或代理干擾

VPN 和某些代理設置可能會干擾 SSH 流量:

  • 檢查您的 VPN 是否處於活動狀態並正確路由您的流量。
  • 如果使用 VPN 分割隧道,請驗證隧道中是否包含到 SSH 服務器的流量。
  • 嘗試暫時禁用 VPN 並通過直接互聯網訪問重新連接。

同樣,企業代理或限制性網關可能會丟棄或操縱 SSH 數據包,從而導致會話掛起。

8. SSH 密鑰問題和身份驗證延遲

雖然身份驗證錯誤通常會返回明確的“權限被拒絕”消息,但有時密鑰處理或授權密鑰查找的長時間延遲可能會導致連接卡住。

  • ~/.ssh目錄中的密鑰過多會減慢身份驗證速度。在~/.ssh/config中使用IdentitiesOnly yes來減少嘗試。
  • 配置指定密鑰: ssh -i ~/.ssh/my_key user@host

9. 服務器負載和資源限制

負載過重的服務器可能會減慢甚至阻止新的 SSH 連接:

  • 檢查服務器上的 CPU、RAM 或進程限制是否較高
  • 如果無法通過 SSH 訪問,請使用雲控制台檢查系統狀態

內存不足的情況可能會導致sshd行為不穩定或只是使新連接嘗試超時。

10. 被Fail2Ban或類似工具暫時禁止

Fail2Ban 或 DenyHosts 等安全工具可能會阻止重複驗證失敗的 IP。這可能會導致靜默連接掛起:

  • 檢查/var/log/fail2ban.log或相關日誌中的 IP 禁令
  • 盡可能將您的 IP 列入白名單或從不同網絡訪問服務器

結論

SSH 連接問題(尤其是當卡在“建立與服務器的連接”時)可能源於多種因素,從本地防火牆設置到遠程服務器性能問題。從基本的連接測試開始,逐步進行深入的日誌記錄和配置檢查的嚴格的故障排除方法至關重要。使用詳細 SSH 輸出等工具、檢查系統日誌、驗證 DNS 並確保服務器響應良好,將幫助您有效地隔離根本原因。

請記住:始終增量測試更改並備份您修改的任何配置。在高可用性環境中,當 SSH 無法響應時,採用帶外管理方法(例如 IPMI、串行控制台或主服務器訪問)至關重要。