夏日炎炎 — 万物皆化,连我们的价格也在融化。−25%所有年付套餐 −25%,截至 8 月 31 日查看套餐
EQVPS

被 ufw 挡在自己的 VPS 外面?无需重装就能重新进入

2026年8月22日 · 1 分钟阅读 · EQVPS Team

第一次自己管服务器的人都有个成人礼:你决定配个防火墙,敲几条 ufw 命令,按下启用——然后终端没声了。SSH 没了。你没搞崩什么,也没被黑。你只是把门锁上了,自己却在外面。

这事老手也会碰上。上周我们一位客户就中招了,所以我把它写下来。好消息:一分钟内就能完全恢复,而且不用重装、不会丢一个文件。方法如下。

一台被防火墙墙壁封住的服务器,一个发光的控制台窗口是回到里面的入口

到底出了什么问题

ufw(Uncomplicated Firewall)默认拒绝所有入站。你一执行 ufw enable,凡是没被显式放行的都会被丢弃——包括你正坐在里面的那条 SSH 会话。忘了先 ufw allow 自己的 SSH 端口,规则一生效,你就把自己的连接切断了。

这是最经典的版本。还有两种也常坑人:

无论哪种,服务器本身都好好的——在运行、磁盘完整、你的应用还在墙后嗡嗡跑。这纯粹是网络访问的问题。正因如此,修起来很轻松。

错误做法:重装

第一反应常常是「干脆重置服务器从头来」。别——这种情况别这么干。重装为了拿回能用的 SSH 而把一切抹掉,而挡住 SSH 的不过是一条十秒就能撤销的防火墙命令。这就像因为把前门反锁了就把房子烧掉。

当你想要一张白纸时,重装才合适。对 ufw 锁门来说,它是杀鸡用牛刀。

正确做法:Web 控制台

任何像样的 VPS 都会给你一个带外控制台——一条不走 SSH、甚至不经过网络栈就能进机器的通道。在 EQVPS 上,它就是服务器页面上的 Console 按钮。这是串口控制台:纯文本,像显示器加键盘一样直连 VM。防火墙规则对它无能为力,因为它不是网络流量。

EQVPS 服务器管理页上的 Console 按钮

点它,用 root 凭据登录(没有密码就在面板里揭示一下),你就进了机器——有没有防火墙都行。

现在撤销后果。最快的路径:

sudo ufw disable

这会关掉防火墙并保留你的规则,方便你改正错误后再启用。SSH 立刻回来。

如果你不想把防火墙整个关掉,就放行你漏掉的那个端口:

sudo ufw allow 22
sudo ufw status numbered

status numbered 值得一看:它显示规则顺序——「我放行了 22 却还是被挡」的情况就藏在这里。如果有条 deny 排在你的 allow 上面,删掉它:sudo ufw delete <编号>

多数教程漏掉的 NAT 陷阱

如果你用的是 NAT 套餐,这里有个坑。你通过一个高端口(比如 20266)连 SSH,于是自然想写 ufw allow 20266。这没有任何作用。

在 NAT 下,那个外部端口被转发到 VM 内部的 22 端口。ufw 跑在 VM 内部,永远只看得到 22。所以你真正需要的是:

sudo ufw allow 22

放行 20266,你会盯着依旧连不上的连接纳闷为什么。放行 22,你就进去了。任何服务同理:放行进程在机器内部监听的端口,而不是你从外面连的那个转发端口。

怎样再也不重蹈覆辙

修起来只要一分钟,但不需要修更好。两个习惯:

**启用前先放行你的 SSH 端口。**永远这个顺序:

sudo ufw allow 22
sudo ufw enable

反过来做,你就又得进控制台了。

**改防火墙规则时保持第二个 SSH 会话开着。**登录两次。在一个窗口里改;如果 SSH 断了,另一个窗口还活着,能救场。老把戏,每次都管用。

如果你在配一台新机器——我们的新 VPS 安全清单会按正确顺序讲 ufw,连同 SSH 密钥,以及头十分钟里真正要紧的另外几件事。

小结

ufw 锁门看着吓人,其实几乎什么都不是。服务器从没离开;你只需要一扇防火墙关不上的门——Web 控制台——和一条命令。把 ufw disable 和控制台揣在兜里,下次启用前先放行端口,你就再也不用为这事冒汗了。

常见问题

我启用了 ufw,现在 SSH 连不上。服务器是不是废了?

没废。服务器好好运行着——你只是从里面把门锁上了,数据毫发无损。打开面板里的 Web 控制台(它不走 SSH 也能登录),运行 `sudo ufw disable`,你就回来了。不需要重装。

为什么启用 ufw 会把 SSH 弄断?

ufw 默认拒绝所有入站流量。如果你没先放行自己的 SSH 端口就启用,你当前的会话会被切断。这是最常见的自我锁门方式。永远先 `ufw allow <ssh 端口>`,再 `ufw enable`。

如果根本连不上 SSH,怎么修 ufw?

用面板里的带外 Web 控制台(serial console)——它不走 SSH,甚至不经过网络栈,所以防火墙规则挡不住它。登进去后 `sudo ufw disable`(最快),或者 `sudo ufw allow <端口>` 修正具体规则。

在 NAT VPS 上,ufw 该放行哪个端口?

放行 22,而不是外部端口。NAT 套餐里你连的是像 20266 这样的高端口,但它被转发到 VM 内部的 22 端口。ufw 跑在 VM 内部,只看得到 22。放行 20266 没用——放行 22。

`ufw reset` 比 `ufw disable` 更安全吗?

`disable` 只是关掉防火墙并保留规则——回来最快。`reset` 会把所有规则清成默认。恢复用 `disable`,之后再小心地重加规则。只有当规则集乱成一团、你想彻底清掉时才用 `reset`。

← 返回博客查看套餐与价格 →

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。