排錯

SSH "Connection refused":原因與修法

Connection refused 意味著機器應答了、但那個連接埠上沒人在聽。四個原因——sshd 沒跑、連接埠不對、防火牆拒絕、機器不對——怎麼和逾時/認證失敗區分,以及修法。

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

"Connection refused" 是什麼意思

"Connection refused" 是網路層的拒絕:你的封包到達了那臺機器(或它前面的防火牆),有個東西主動回答"這裡沒有人在聽"。它不同於 Permission denied(連上之後認證失敗),也不同於逾時(封包石沉大海——通常是 IP 錯或網路不可達)。Refused 的意思是:機器對了,但那個連接埠上沒有 SSH 服務在應答。四個原因幾乎涵蓋所有情況。

四個原因

#原因快速檢查
1SSH 服務沒在跑在機器上 systemctl status ssh
2連接埠不對SSH 被挪離 22 了嗎?查連線的連接埠
3防火牆主動拒絕ufw status / 雲端安全群組
4機器不對(那個 IP 上是別的東西)IP 變了(DHCP)?是對的機器嗎?

1——sshd 真的在跑嗎?

在伺服器上(主控臺、web VNC、或任何別的進去方式):

sudo systemctl status ssh    # Debian/Ubuntu(RHEL 上是 sshd)
sudo systemctl enable --now ssh

新裝系統是經典場景:樹莓派系統和很多精簡映像出廠時 SSH 是關閉的。啟用一次就持久了。見在樹莓派上啟用 SSH

2——連接埠對嗎?

如果管理員把 SSH 挪離了 22 連接埠(常見的降噪做法),連 22 就會被拒。檢查連線設定裡的連接埠欄位,或從另一臺機器探測:nc -vz host 22 對比 nc -vz host 2222

3——防火牆在拒絕

設定成拒絕(而非丟棄)的防火牆正好產生這個報錯。在機器上:sudo ufw status——你的 SSH 連接埠放行了嗎?雲端伺服器還要查服務商面板裡的安全群組/防火牆規則;在服務商層面關了 22 連接埠的 VPS,作業系統根本看不到封包就被拒了。

4——那個地址上是別的機器

家庭網路會重新分配 IP(DHCP)。如果你儲存的連線指著 192.168.1.42,而那臺機器重啟後變成了 .57,你可能正連到另一臺拒絕 22 連接埠的裝置。重查路由器的裝置清單——或者用 Tailscale 繞開整類問題:無論區域網路怎麼變,每臺機器保持一個穩定的私有地址。TermAI 內建它。見 Tailscale SSH 設定

手機上透過穩定 Tailscale 地址的可用 SSH 工作階段
穩定地址終結'IP 變了、connection refused'的迴圈:走 Tailscale,機器始終是同一個私有地址,無論你和它在哪。

Refused vs 逾時 vs Permission denied

  • Connection refused——機器可達,沒人在聽(本文)。
  • Connection timed out——封包消失了:IP 錯、機器關了、或你在網路外面試圖連私有地址(用 Tailscale)。
  • Permission denied——SSH 應答了,你的認證失敗:見 publickey 指南

在手機上排查

這個錯在行動端的彆扭之處是:你往往沒法 SSH 進那臺機器去查它。如果同網路還有任何一臺機器可達,就借道:SSH 進它,然後 nc -vz / ping 那臺被拒的機器,看什麼連接埠真的開著。記不住診斷咒語,就把情況描述給 TermAI 的助手——"查一下 192.168.1.42 的 22 連接埠有沒有東西在聽"——在你連上的那臺機器上執行建議的命令。

常見問題

SSH connection refused 是什麼導致的?
SSH 服務沒在跑、SSH 在別的連接埠、防火牆拒絕那個連接埠、或那個 IP 上是別的機器。這是網路層的拒絕,不是認證失敗。

它和 connection timed out 有什麼區別?
Refused = 機器回答了"這裡沒有"。Timed out = 完全沒有回答(IP 錯、主機關機、或網路不可達)。

樹莓派上的 connection refused 怎麼修?
樹莓派系統預設關閉 SSH——用 raspi-config 啟用,或在 boot 分割區放一個 ssh 檔案,之後就持久了。

快速事實

  • 含義:機器可達、那個連接埠上沒人在聽(網路層,認證之前)
  • 原因:sshd 沒跑 · 連接埠不對 · 防火牆拒絕 · 機器不對/IP 變了
  • 檢查:機器上 systemctl status ssh;外部 nc -vz host port
  • 避免 IP 漂移:用穩定的 Tailscale 地址代替區域網路 DHCP 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