第一次自己管伺服器的人都有個成人禮:您決定配個防火牆,敲幾條 ufw 指令,按下啟用——然後終端沒聲了。SSH 沒了。您沒搞崩什麼,也沒被黑。您只是把門鎖上了,自己卻在外面。
這事老手也會碰上。上週我們一位客戶就中招了,所以我把它寫下來。好訊息:一分鐘內就能完全恢復,而且不用重灌、不會丟一個檔案。方法如下。

到底出了什麼問題
ufw(Uncomplicated Firewall)預設拒絕所有對內。您一執行 ufw enable,凡是沒被顯式放行的都會被丟棄——包括您正坐在裡面的那條 SSH 工作階段。忘了先 ufw allow 自己的 SSH 埠,規則一生效,您就把自己的連線切斷了。
這是最經典的版本。還有兩種也常坑人:
- 放行了錯誤的埠。打錯字,或者放行了服務埠(比如 8080)卻忘了 22。
- 放行了 22,但在列表上方又設了一條
deny把它蓋住了。ufw 對順序敏感。
無論哪種,伺服器本身都好好的——在執行、磁碟完整、您的應用還在牆後嗡嗡跑。這純粹是網路存取的問題。正因如此,修起來很輕鬆。
錯誤做法:重灌
第一反應常常是「乾脆重設伺服器從頭來」。別——這種情況別這麼幹。重灌為了拿回能用的 SSH 而把一切抹掉,而擋住 SSH 的不過是一條十秒就能撤銷的防火牆指令。這就像因為把前門反鎖了就把房子燒掉。
當您想要一張白紙時,重灌才合適。對 ufw 鎖門來說,它是殺雞用牛刀。
正確做法:Web 控制台
任何像樣的 VPS 都會給您一個帶外控制台——一條不走 SSH、甚至不經過網路棧就能進機器的通道。在 EQVPS 上,它就是伺服器頁面上的 主控台按鈕。這是序列埠控制台:純文字,像顯示器加鍵盤一樣直連 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 和控制台揣在兜裡,下次啟用前先放行埠,您就再也不用為這事冒汗了。
評論
目前還沒有評論。歡迎成為第一位。