ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
Linux 伺服器

Linux SSH 連線失敗排查:Connection refused、連線超時與無法登入解決方法

7 個步驟 7 分鐘閱讀 1641 次閱讀 87
本文目錄

SSH 突然連不上是最常見的伺服器問題之一。本文提供一套 Linux SSH 連線失敗排查流程,幫你根據報錯快速判斷是網路、埠、sshd 服務、防火牆還是 fail2ban 封禁導致的問題,並在 SSH 完全無法使用時通過 VNC 控制臺進入系統修復。適用於 Debian/Ubuntu 與 CentOS/Rocky/AlmaLinux 系統的 VPS 和獨立伺服器。

步驟 1:根據 SSH 報錯判斷問題方向

不同報錯指向不同原因,先看清提示再動手:

  • Connection refused:伺服器可達,但該埠沒有程式監聽,通常是 sshd 未執行或埠寫錯。
  • Connection timed out:資料包沒有得到任何回應,常見於 IP 錯誤、伺服器宕機、防火牆丟棄或 IP 被封禁。
  • Permission denied:網路和服務都正常,是帳號、密碼或金鑰的問題。
  • Connection reset / closed by remote host:常見於 fail2ban、hosts.deny 攔截或 sshd 配置錯誤。
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

步驟 2:在本地測試 SSH 埠連通性

先從自己的電腦測試埠是否可達,並用 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]

步驟 3:通過 VNC 控制臺登入伺服器

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

步驟 4:檢查 sshd 服務狀態與監聽埠

確認 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))

步驟 5:檢查防火牆是否放行 SSH 埠

根據系統使用的防火牆檢視規則,確認 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

步驟 6:檢查 fail2ban 是否封禁了你的 IP

多次輸錯密碼後,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

步驟 7:檢視 SSH 日誌定位原因

如果以上都正常,檢視 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 /
如果伺服器 ping 不通、VNC 也無法開啟或顯示異常,可能是伺服器宕機或網路故障,請直接提交工單,由技術人員檢查。

常見問題

重灌系統後 SSH 提示主機金鑰變化無法連線?

這是本地儲存的舊指紋與新系統不一致導致的,在本地執行 ssh-keygen -R 伺服器IP 刪除舊記錄後重新連線即可。

只有我自己的網路連不上,別人都能連?

可能是你的 IP 被 fail2ban 封禁,或本地網路遮蔽了該埠。可換網路測試,或在 VNC 中解封 IP、改用其他埠。

VNC 中忘記 root 密碼怎麼辦?

可在客戶中心重置密碼(如該產品支援),或通過 VNC 在啟動選單進入單使用者模式重置。不熟悉操作時請提交工單。

如按以上步驟操作後仍無法解決,歡迎提交工單聯絡 IMIDC 7×24 技術支援。提交時請註明伺服器 IP、作業系統、已執行的命令和報錯截圖,工程師可以更快定位問題。

這篇文章有幫助嗎?

相關教程