排錯

SSH "Connection closed by remote host":原因與修法

伺服器接受後又斷開你的連線——通常是 fail2ban 封禁、sshd 重啟/過載、或連線數上限。怎麼和 refused/timed out 區分、確認封禁、以及讀伺服器日誌。

CC Chen Chen· 創始人·2026 年 6 月 24 日·閱讀 6 分鐘

"Connection closed by remote host" 是什麼意思

伺服器接受了你的連線,然後主動把它斷開。這正是和 refused(沒人在聽)、timed out(完全沒回應)的關鍵區別:這裡有東西應答了,然後掛斷。各種變體——Connection closed by remote hostConnection reset by peerkex_exchange_identification: Connection closed by remote host——幾乎總是其中之一:你被 fail2ban 封了、伺服器 sshd 在重啟/過載、或撞上了連線數上限

原因,按可能性排序

#原因蛛絲馬跡
1失敗登入後被 fail2ban / 封 IP昨天還好,今天幾次失敗嘗試後就死了
2sshd 在重啟或剛重啟伺服器在重啟;過一會兒就好
3連線太多(MaxStartups)繁忙伺服器,負載下間歇性
4hosts.deny / TCP wrappers / 防火牆重置特定 IP 被伺服器攔
5那個連接埠上是非 SSH 服務連接埠錯了——別的東西應答後斷開

1——頭號原因:你被 fail2ban 封了

如果這之前有幾次失敗的金鑰/密碼嘗試,fail2ban(或雲服務商的等價物)很可能封了你的 IP——你一連它就丟包,表現就是"closed by remote host"。從另一臺還能連的機器確認並解封:

sudo fail2ban-client status sshd          # 你的 IP 在列表裡嗎?
sudo fail2ban-client set sshd unbanip 1.2.3.4

在手機上這尤其常見:變動的 IP(Wi-Fi 切蜂窩)加上一兩次錯誤金鑰嘗試,就足以觸發封禁。修好底層的認證問題(見 Permission denied)能止住反覆發生。

2——sshd 重啟、重啟中或過載

如果機器在重啟、或 sshd 在重載設定,那個視窗裡的連線會被斷開;過一分鐘再試。在長期繁忙的伺服器上,sshd 的 MaxStartups 限流(預設 10:30:100)在太多未認證連線在途時開始丟棄——負載下你會看到間歇性斷開。在伺服器上調高它有幫助:

# /etc/ssh/sshd_config
MaxStartups 30:50:100
# 然後:sudo systemctl reload ssh

3——看伺服器自己的日誌

權威答案在伺服器上。從任何能進去的方式(主控臺、另一個工作階段):

sudo journalctl -u ssh -n 50      # 或:tail -n 50 /var/log/auth.log

它會明白寫出是封禁、拒絕某使用者、hosts.deny、還是設定錯誤——把猜測變成一行診斷。

在手機上恢復

行動端的惱人之處是:你往往沒法 SSH 進那臺剛把你斷開的機器去查。如果同網路還有另一臺可達,就借道進去跑 fail2ban-client / journalctl 檢查。如果你盯著原始報錯、不確定是五個原因裡的哪個,選中它問助手——TermAI 的 AI 讀真實報錯和你的脈絡,告訴你它更像封禁、限流還是重啟,並給出確認用的命令。

TermAI 的 AI 助手解讀一條 SSH 斷線訊息
closed-by-remote-host 有五個長得一樣的常見原因。選中報錯問 AI,它貼著你的工作階段,縮小到最可能的那個並給出驗證命令。

常見問題

"Connection closed by remote host" 是什麼導致的?
伺服器接受後又斷開——最常見是 fail2ban 封 IP、sshd 重啟/過載、連線數上限(MaxStartups)、或基於主機的攔截。查伺服器認證日誌。

它和 connection refused 有什麼區別?
Refused = 沒人在聽。Closed by remote host = 有東西應答了,然後主動掛斷。

我老是被封,為什麼?
反覆的失敗認證(常是錯的或沒遞的金鑰)觸發 fail2ban。修認證問題本身,有穩定地址的話把它加白名單。

kex_exchange_identification: Connection closed 是什麼?
同一族——伺服器在初始握手期間斷開,通常是封禁、限流、或那個連接埠上是非 SSH 服務。

快速事實

  • 含義:伺服器接受後主動斷開(不是 refused、不是 timed out)
  • 頭號原因:失敗登入後被 fail2ban / 封 IP——fail2ban-client status sshd
  • 其它:sshd 重啟、負載下 MaxStartups 限流、hosts.deny、連接埠錯
  • 診斷:伺服器上 journalctl -u ssh / /var/log/auth.log 寫明原因
  • 行動端提示:變動 IP + 一兩次錯誤金鑰很容易觸發封禁——修認證根因
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog