開始輸入,可搜尋發票、服務、域名、工單,以及 更多...
SSH 突然連不上是最常見的伺服器問題之一。本文提供一套 Linux SSH 連線失敗排查流程,幫你根據報錯快速判斷是網路、埠、sshd 服務、防火牆還是 fail2ban 封禁導致的問題,並在 SSH 完全無法使用時通過 VNC 控制臺進入系統修復。適用於 Debian/Ubuntu 與 CentOS/Rocky/AlmaLinux 系統的 VPS 和獨立伺服器。
不同報錯指向不同原因,先看清提示再動手:
ssh: connect to host 203.0.113.10 port 22: Connection refused
ssh: connect to host 203.0.113.10 port 22: Connection timed out
[email protected]: Permission denied (publickey,password).
kex_exchange_identification: read: Connection reset by peer
先從自己的電腦測試埠是否可達,並用 ssh -vvv 檢視詳細握手過程。如果在其他網路(例如手機熱點)可以連線,說明問題出在本地網路或運營商線路,而非伺服器。
# Windows PowerShell
Test-NetConnection 203.0.113.10 -Port 22
# macOS / Linux
nc -vz -w 5 203.0.113.10 22
# Verbose SSH client output shows where it fails
ssh -vvv -p 22 [email protected]
SSH 無法使用時,請登入客戶中心 → 我的產品與服務 → 選擇伺服器 → 管理,開啟 VNC 控制臺(不同產品入口名稱可能不同,如找不到可提交工單)。VNC 相當於直接接上顯示器和鍵盤,不依賴 SSH 和網路配置,輸入 root 和密碼即可登入。以下排查命令都在 VNC 中執行。
# In the VNC console
localhost login: root
Password:
# Then confirm the network is up
ip a
ping -c 3 1.1.1.1
確認 sshd 正在執行。如果狀態為 failed,先用 sshd -t 檢查配置檔案語法,修正錯誤後重啟。再用 ss 確認它實際監聽的埠,與你連線時使用的埠是否一致。
# Debian / Ubuntu (service name: ssh)
systemctl status ssh
# CentOS / Rocky / AlmaLinux (service name: sshd)
systemctl status sshd
sshd -t # config syntax check
systemctl restart sshd # or: systemctl restart ssh
ss -tlnp | grep sshd
# LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3))
根據系統使用的防火牆檢視規則,確認 SSH 埠(預設 22 或你修改後的埠)已放行。修改過 SSH 埠卻忘記放行,是“連線超時”最常見的原因。
# firewalld (CentOS / Rocky / AlmaLinux)
firewall-cmd --list-all
firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload
# ufw (Debian / Ubuntu)
ufw status verbose
ufw allow 22/tcp
# Raw rules (iptables / nftables)
iptables -S | head -n 30
nft list ruleset | head -n 50
多次輸錯密碼後,fail2ban 會自動封禁來源 IP,表現為突然超時或被拒絕。在百度或 ip.sb 等網站查到自己的公網 IP 後,在伺服器上檢視並解封。
fail2ban-client status sshd
fail2ban-client set sshd unbanip 198.51.100.25
# Also check TCP wrappers on older systems
cat /etc/hosts.deny
如果以上都正常,檢視 sshd 日誌通常能直接看到拒絕原因,例如許可權錯誤、使用者被禁止登入、金鑰格式錯誤等。另外磁碟被寫滿也可能導致登入異常。
# Recent sshd logs
journalctl -u sshd -n 50 --no-pager # CentOS / Rocky / AlmaLinux
journalctl -u ssh -n 50 --no-pager # Debian / Ubuntu
tail -n 50 /var/log/secure # RHEL family
tail -n 50 /var/log/auth.log # Debian / Ubuntu
# A full disk can also break logins
df -h /
這是本地儲存的舊指紋與新系統不一致導致的,在本地執行 ssh-keygen -R 伺服器IP 刪除舊記錄後重新連線即可。
可能是你的 IP 被 fail2ban 封禁,或本地網路遮蔽了該埠。可換網路測試,或在 VNC 中解封 IP、改用其他埠。
可在客戶中心重置密碼(如該產品支援),或通過 VNC 在啟動選單進入單使用者模式重置。不熟悉操作時請提交工單。
如按以上步驟操作後仍無法解決,歡迎提交工單聯絡 IMIDC 7×24 技術支援。提交時請註明伺服器 IP、作業系統、已執行的命令和報錯截圖,工程師可以更快定位問題。