排错

SSH "Connection refused":原因与修法

Connection refused 意味着机器应答了、但那个端口上没人在听。四个原因——sshd 没跑、端口不对、防火墙拒绝、机器不对——怎么和超时/认证失败区分,以及修法。

CC Chen Chen· 创始人·2026 年 6 月 11 日·阅读 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