第一次自己管服务器的人都有个成人礼:你决定配个防火墙,敲几条 ufw 命令,按下启用——然后终端没声了。SSH 没了。你没搞崩什么,也没被黑。你只是把门锁上了,自己却在外面。
这事老手也会碰上。上周我们一位客户就中招了,所以我把它写下来。好消息:一分钟内就能完全恢复,而且不用重装、不会丢一个文件。方法如下。

到底出了什么问题
ufw(Uncomplicated Firewall)默认拒绝所有入站。你一执行 ufw enable,凡是没被显式放行的都会被丢弃——包括你正坐在里面的那条 SSH 会话。忘了先 ufw allow 自己的 SSH 端口,规则一生效,你就把自己的连接切断了。
这是最经典的版本。还有两种也常坑人:
- 放行了错误的端口。打错字,或者放行了服务端口(比如 8080)却忘了 22。
- 放行了 22,但在列表上方又设了一条
deny把它盖住了。ufw 对顺序敏感。
无论哪种,服务器本身都好好的——在运行、磁盘完整、你的应用还在墙后嗡嗡跑。这纯粹是网络访问的问题。正因如此,修起来很轻松。
错误做法:重装
第一反应常常是「干脆重置服务器从头来」。别——这种情况别这么干。重装为了拿回能用的 SSH 而把一切抹掉,而挡住 SSH 的不过是一条十秒就能撤销的防火墙命令。这就像因为把前门反锁了就把房子烧掉。
当你想要一张白纸时,重装才合适。对 ufw 锁门来说,它是杀鸡用牛刀。
正确做法:Web 控制台
任何像样的 VPS 都会给你一个带外控制台——一条不走 SSH、甚至不经过网络栈就能进机器的通道。在 EQVPS 上,它就是服务器页面上的 Console 按钮。这是串口控制台:纯文本,像显示器加键盘一样直连 VM。防火墙规则对它无能为力,因为它不是网络流量。

点它,用 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 和控制台揣在兜里,下次启用前先放行端口,你就再也不用为这事冒汗了。
评论
暂无评论。来做第一个吧。