通過 Root Shell 修改 sshd 配置與防火牆設置
更多語言
更多操作
搬瓦工 KiwiVM 控制面板提供了三種 Root Shell 工具,可以直接在瀏覽器中操作服務器,而不需要依賴 SSH 客戶端。對於修改 sshd 配置和防火牆規則這類操作來說,Root Shell 有一個天然的優勢:它完全獨立於 SSH 服務運行,即使 SSH 服務出了問題,你依然可以通過 Root Shell 進入系統進行修復。
這一點對新手來說尤其重要。修改 sshd 配置和防火牆是 VPS 管理中最容易把自己鎖在門外的操作,端口改錯了、防火牆規則寫反了、sshd 重啟失敗了,都有可能讓你無法通過 SSH 連上服務器。有 Root Shell 在手,就相當於給自己留了一條後路。
本文將詳細介紹如何利用搬瓦工 KiwiVM 面板的 Root Shell 功能,在不同操作系統上完成 sshd 配置修改和防火牆管理。覆蓋 Ubuntu/Debian、CentOS 7/8 以及 Rocky Linux 9 三大主流系統,適用於搬瓦工 KiwiVM 控制面板當前支持的所有可安裝系統。
| 本文適用場景
1. 需要修改 SSH 端口、禁用密碼登錄等 sshd 參數 2. 需要配置或修復防火牆規則(firewalld / iptables / ufw) 3. SSH 連接出問題,需要通過 Root Shell 緊急修復 4. 首次拿到搬瓦工 VPS,需要進行基礎安全加固 |
一、KiwiVM Root Shell 工具概述
1.1 三種 Root Shell 的區別
搬瓦工 KiwiVM 面板提供了三種不同的 Root Shell 工具,定位各有不同。進入方式都是在 KiwiVM 面板左側菜單中找到對應選項並點擊 Launch 按鈕。
| 功能 | Root shell - basic | Root shell - advanced | Root shell - interactive |
| 界面形式 | 單行命令輸入框 | 多行命令輸入框 | 完整 Web 終端(VNC) |
| 交互能力 | 不支持交互 | 不支持交互 | 完整交互支持 |
| 適用場景 | 查看狀態
執行簡單命令 |
批量執行命令
輸出較長的命令 |
vi/nano 編輯文件
修復 SSH/防火牆 密碼修改等 |
| 編輯配置文件 | 不適合 | 可用 sed 替換 | vi/nano 均可 |
| 推薦指數 | 日常查看 | 批量操作 | 本文推薦 |
對於修改 sshd 和防火牆這類操作,Root shell - interactive(交互式 Shell)是最推薦的選擇。因為修改配置文件通常需要用到 vi 或 nano 這類文本編輯器,只有 interactive 模式才支持完整的交互操作。
1.2 進入 Root shell - interactive
具體步驟如下:
1. 登錄搬瓦工官網 bwh81.net,進入 Services → My Services,找到你的 VPS 實例。
2. 點擊 Open KiwiVM(或 KiwiVM Control Panel)進入控制面板。
3. 在左側菜單中找到 Root shell – interactive,點擊進入。
4. 點擊 Launch 按鈕,稍等幾秒,會彈出一個基於 Web 的終端窗口。
5. 輸入用戶名 root,回車後輸入密碼(密碼輸入時不會顯示任何字符,這是正常的),回車即可登錄。
| 關於密碼
Root shell - interactive 使用的是 VPS 的 root 密碼,即安裝系統時分配的密碼。如果忘記了,可以在 KiwiVM 面板的 Root password modification 中重新生成。注意重置密碼需要 VPS 處於運行狀態。 |
1.3 Root shell - basic/advanced 的使用場景
雖然本文主要推薦 interactive 模式,但 basic 和 advanced 在某些場景下也有用處。例如你只想快速查看當前 sshd 端口或防火牆狀態,用 basic 模式輸入一條命令就行,不需要登錄完整終端。
常用的快速查看命令:
| # 查看當前 SSH 端口
grep -i '^Port' /etc/ssh/sshd_config
systemctl status sshd
firewall-cmd --state
ufw status |
這些命令不需要交互,在 basic 或 advanced 模式下直接粘貼執行即可。但涉及到編輯配置文件的操作,務必切換到 interactive 模式。
二、通過 Root Shell 修改 sshd 配置
2.1 sshd 配置文件位置
SSH 服務的主配置文件位於 /etc/ssh/sshd_config,所有系統都一樣。需要注意的是 Rocky Linux 9 / AlmaLinux 9 引入了 /etc/ssh/sshd_config.d/ 目錄,支持以 .conf 後綴的配置片段方式加載。但主配置文件路徑不變,直接編輯主文件也完全可以。
在開始修改之前,強烈建議先備份原始配置文件:
| cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak |
2.2 修改 SSH 端口
搬瓦工在安裝系統時會分配一個隨機的高位端口作為默認 SSH 端口,這個端口可以在 KiwiVM 面板的 Main Controls 頁面看到。如果需要修改成其他端口,操作步驟如下。
步驟一:編輯配置文件
在 Root shell - interactive 中登錄後,使用 vi 編輯配置文件:
| vi /etc/ssh/sshd_config |
找到 Port 所在的行(可以按 / 然後輸入 Port 進行搜索),將端口號修改為你想要的值。如果該行前面有 # 號,需要先去掉注釋符。
| # 修改前(可能的形式)
#Port 22 Port 28456
Port 36912 |
按 i 進入編輯模式,修改完成後按 Esc,然後輸入 :wq 回車保存退出。
| 端口選擇建議
建議選擇 10000-65535 之間的高位端口,避開常見服務端口(如 80、443、3306、8080 等)。 搬瓦工默認分配的隨機端口一般就在這個範圍內,如果只是因為端口被封才修改,換一個新的高位端口即可。 |
步驟二:處理 SELinux(僅 CentOS / Rocky Linux)
如果你的系統是 CentOS 7/8 或 Rocky Linux 9,並且 SELinux 處於 enforcing 狀態,直接重啟 sshd 會失敗。需要先告知 SELinux 允許新端口:
| # 查看 SELinux 狀態
getenforce
# CentOS 7: yum install -y policycoreutils-python
dnf install -y policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 36912 |
||
步驟三:配置防火牆放行新端口
這一步根據操作系統不同,使用的工具也不一樣,詳見下面的第三部分。這裡先給出通用思路:在修改 sshd 端口之後、重啟 sshd 服務之前,要確保防火牆已經放行了新端口。否則重啟 sshd 後雖然服務正常運行,但新端口被防火牆攔截,SSH 照樣連不上。
步驟四:重啟 sshd 服務
| # Rocky Linux 9 建議先做語法檢查
sshd -t
systemctl restart sshd |
如果 sshd -t 沒有任何輸出,說明配置文件語法正確。如果有報錯,按照提示修改對應行即可。
2.3 其他常見 sshd 配置修改
除了端口,以下幾個 sshd 參數也經常需要調整。同樣在 /etc/ssh/sshd_config 中修改:
| 參數 | 推薦值 | 說明 | |
| PermitRootLogin | prohibit-password | 允許 root 登錄但禁止密碼方式,僅允許密鑰 | |
| PasswordAuthentication | no | 禁用密碼登錄,僅允許密鑰登錄(需先配好密鑰) | |
| PubkeyAuthentication | yes | 啟用公鑰認證 | |
| MaxAuthTries | 3 | 最大認證嘗試次數,減少暴力破解風險 | |
| ClientAliveInterval | 300 | 每 300 秒發送一次心跳,防止空閒斷連 | |
| 禁用密碼登錄前請確認
在將 PasswordAuthentication 設為 no 之前,請務必確認 SSH 密鑰已經正確配置並能成功登錄。否則一旦重啟 sshd,密碼和密鑰都用不了,就只能靠 Root Shell 來救了。 | |||
修改完成後,同樣執行 sshd -t 檢查語法,然後 systemctl restart sshd 重啟服務使配置生效。
三、通過 Root Shell 管理防火牆
搬瓦工 VPS 在默認安裝系統後,防火牆的狀態因系統而異。有的系統默認開啟了防火牆,有的沒有。下面按操作系統分別說明如何查看和管理防火牆。
3.1 Ubuntu / Debian — ufw 防火牆
Ubuntu 和 Debian 系統使用 ufw(Uncomplicated Firewall)作為默認防火牆管理工具。搬瓦工安裝的 Ubuntu/Debian 系統默認情況下 ufw 通常是未啟用的,也就是說所有端口默認都是開放的。
查看 ufw 狀態:
| ufw status |
如果返回 Status: inactive,說明 ufw 未啟用,防火牆不會阻攔任何端口,此時修改 SSH 端口後不需要額外操作防火牆。
如果 ufw 已啟用,放行新 SSH 端口的操作:
| # 放行新端口(例如 36912)
ufw allow 36912/tcp
ufw delete allow 22/tcp
ufw status numbered |
|
| ufw 常用操作速查
ufw enable — 啟用防火牆 ufw disable — 關閉防火牆 ufw allow 80/tcp — 放行 TCP 80 端口 ufw allow 443 — 放行 TCP/UDP 443 端口 ufw deny 3306/tcp — 拒絕 TCP 3306 端口 ufw reset — 重置所有規則為默認 | |
| 啟用 ufw 前注意
如果你要首次啟用 ufw,一定要先確保已經放行了當前的 SSH 端口,否則啟用防火牆的一瞬間就會斷開 SSH 連接。通過 Root Shell 操作可以避免這個風險,因為 Root Shell 不走 SSH 通道。 | |
3.2 CentOS 7/8 — firewalld 防火牆
CentOS 7 和 CentOS 8 使用 firewalld 作為默認防火牆管理工具。搬瓦工安裝的 CentOS 系統中,firewalld 默認狀態不一定是開啟的,具體取決於安裝的系統模板。
查看 firewalld 狀態:
| # 檢查服務狀態
systemctl status firewalld
firewall-cmd --state |
如果返回 not running 或者提示服務未找到,說明防火牆未啟用。
firewalld 已啟用時,放行新 SSH 端口:
| # 永久放行新端口
firewall-cmd --permanent --add-port=36912/tcp
firewall-cmd --permanent --remove-port=28456/tcp
firewall-cmd --reload
firewall-cmd --list-ports |
也可以使用 service 方式管理(推薦用於標準服務):
| # 查看當前放行的服務
firewall-cmd --list-services
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload |
|
| firewalld 常用操作速查
systemctl start firewalld — 啟動防火牆 systemctl stop firewalld — 停止防火牆 systemctl enable firewalld — 開機自啟 systemctl disable firewalld — 禁止開機自啟 firewall-cmd --list-all — 查看所有規則 firewall-cmd --reload — 重新加載規則 | |
3.3 Rocky Linux 9 — firewalld 防火牆
Rocky Linux 9 同樣使用 firewalld,操作方式與 CentOS 7/8 基本一致。主要區別在於:Rocky Linux 9 使用 dnf 替代 yum 作為包管理器,以及配置文件目錄結構有細微差異(如 sshd_config.d/ 目錄),但防火牆的操作命令完全一樣。
| # 查看防火牆狀態
firewall-cmd --state
firewall-cmd --permanent --add-port=36912/tcp firewall-cmd --reload
firewall-cmd --list-ports |
Rocky Linux 9 的 firewalld 還支持更高級的區域(zone)管理。默認區域通常是 public,如果你有更精細的安全需求,可以創建自定義區域並設置基於來源 IP 的訪問控制。但對於大多數搬瓦工用戶來說,直接在默認區域操作就夠用了。
3.4 舊版 CentOS 6 / 手動安裝的 iptables
雖然搬瓦工目前已不推薦安裝 CentOS 6,但如果你的系統使用的是 iptables 而非 firewalld,操作方式如下:
| # 放行新端口
iptables -A INPUT -p tcp --dport 36912 -j ACCEPT
service iptables save
iptables-save > /etc/iptables.rules
iptables -L -n |
|
| iptables 規則順序很重要
iptables 的規則是按順序匹配的。如果前面有一條 DROP 所有的規則,後面加的 ACCEPT 不會生效。建議使用 -I 參數將規則插入到鏈的最前面:iptables -I INPUT -p tcp --dport 36912 -j ACCEPT | |
四、各系統完整操作流程對比
下面這張表把三個系統上修改 SSH 端口的完整流程放在一起對比,方便快速查閱。假設目標端口為 36912。
| 操作步驟 | Ubuntu / Debian | CentOS 7/8 | Rocky Linux 9 |
| 編輯配置 | vi /etc/ssh/sshd_config | vi /etc/ssh/sshd_config | vi /etc/ssh/sshd_config
或建 .conf 文件到 sshd_config.d/ 目錄 |
| SELinux | 不需要處理 | semanage port -a
-t ssh_port_t -p tcp 36912 |
semanage port -a
-t ssh_port_t -p tcp 36912 |
| 防火牆工具 | ufw | firewalld | firewalld |
| 放行端口 | ufw allow 36912/tcp | firewall-cmd --permanent
--add-port=36912/tcp firewall-cmd --reload |
firewall-cmd --permanent
--add-port=36912/tcp firewall-cmd --reload |
| 語法檢查 | sshd -t | sshd -t | sshd -t |
| 重啟服務 | systemctl restart sshd | systemctl restart sshd | systemctl restart sshd |
| SELinux 工具包 | 無需安裝 | CentOS 7:
policycoreutils-python CentOS 8: policycoreutils-python-utils |
policycoreutils-python-utils |
五、常見實戰場景
5.1 場景一:SSH 端口被封,通過 Root Shell 緊急更換
這是搬瓦工用戶最常遇到的情況。SSH 端口被運營商封鎖後,客戶端無法連接,但通過 KiwiVM 的 Root shell - interactive 可以正常進入系統。操作步驟:
6. 通過 KiwiVM 面板進入 Root shell - interactive 並登錄。
7. 編輯 /etc/ssh/sshd_config,將 Port 改為新端口。
8. 如果是 CentOS/Rocky,處理 SELinux。
9. 如果防火牆已啟用,放行新端口。
10. 重啟 sshd 服務。
11. 使用 SSH 客戶端以新端口連接測試。
5.2 場景二:改壞了 sshd_config,SSH 服務起不來
如果修改 sshd_config 時寫錯了參數,sshd 服務無法啟動,SSH 自然就連不上了。這時候 Root Shell 就派上用場了:
| # 1. 進入 Root shell - interactive 並登錄
journalctl -u sshd -n 20
sshd -t
vi /etc/ssh/sshd_config
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
systemctl restart sshd |
5.3 場景三:防火牆規則寫錯,把自己鎖在外面
這個場景也很經典。比如你在配置 iptables 時不小心執行了一條 DROP ALL 規則,或者啟用 ufw 時忘了先放行 SSH 端口。處理方法:
| # 進入 Root shell - interactive 後
# Ubuntu/Debian ufw disable
systemctl stop firewalld
iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
# (推薦,修好規則再開防火牆) |
恢復連接後,再認真重新配置防火牆規則。Root Shell 在這種場景下是唯一的救命通道,因為它完全繞開了網絡層面的限制。
5.4 場景四:首次安全加固的推薦操作順序
對於剛拿到搬瓦工 VPS 的用戶,建議按以下順序進行基礎安全加固。可以通過 Root Shell 完成全部操作,也可以通過 SSH 客戶端完成(但建議在旁邊開着 Root Shell 備用):
12. 修改 root 密碼為強密碼(KiwiVM 面板或 passwd 命令)
13. 配置 SSH 密鑰登錄
14. 修改 SSH 端口為自定義高位端口
15. 禁用密碼登錄(確認密鑰能用之後)
16. 配置防火牆,僅開放必要端口
17. 安裝 fail2ban 防暴力破解(可選但推薦)
六、Root Shell 使用注意事項
6.1 Root shell - interactive 的限制
雖然 Root shell - interactive 提供了完整的終端功能,但它畢竟是基於 VNC 的 Web 終端,有一些使用上的限制需要注意:
• 無法直接複製粘貼長文本。Web 終端的剪貼板功能有限,如果需要粘貼較長的命令或腳本,建議改用 Root shell - advanced 或將內容寫成腳本通過 wget/curl 下載後執行。
• 會話超時後需要重新登錄。如果長時間不操作,VNC 會話會斷開,重新點擊 Launch 即可。
• 屏幕分辨率有限。Web 終端的顯示區域比較小,查看長輸出時可能不太方便,建議用 less 或 more 命令分頁查看。
• VPS 必須處於運行狀態。Root Shell 需要 VPS 正常運行才能使用,如果 VPS 處於關機狀態,需要先在 KiwiVM 面板點擊 Start 開機。
6.2 用 sed 替代 vi 的技巧
如果你覺得在 Web 終端里用 vi 不太順手,也可以用 sed 命令直接替換配置文件中的內容。這種方式在 Root shell - basic 或 advanced 模式下也能執行,不需要交互。
| # 將 SSH 端口從 28456 改為 36912
sed -i 's/^Port 28456/Port 36912/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd |
|
| sed 的優勢
sed 命令的好處是可以精確替換,不需要進入交互式編輯器。對於在 Root shell - basic/advanced 中快速修改配置非常方便。缺點是需要你確切知道要替換的內容,寫錯了可能破壞配置文件。建議操作前先備份。 | |
6.3 終極兜底方案:重裝系統
如果 sshd 和防火牆配置徹底改壞了,Root Shell 也修不好(比如系統層面的問題),還有最後一招:通過 KiwiVM 面板的 Install new OS 功能重裝系統。重裝後會分配新的 root 密碼和 SSH 端口,所有配置恢復默認。
注意:重裝系統會清除所有數據,請提前做好備份。如果你有重要數據,可以先通過 Root Shell 把關鍵文件打包,然後用 KiwiVM 的 Snapshots 功能做一個快照備份。
七、總結
Root Shell 是搬瓦工 KiwiVM 面板中一個容易被忽視但極其實用的功能。對於 sshd 配置和防火牆管理來說,它既是操作工具,也是安全保障。這裡再強調幾個關鍵點:
• 修改 sshd 或防火牆時,始終保持一個 Root Shell 會話作為備用通道。
• CentOS / Rocky Linux 用戶修改 SSH 端口時不要忘記處理 SELinux。
• 配置防火牆前先確認 SSH 端口已放行,避免把自己鎖在門外。
• 修改前備份配置文件,修改後用 sshd -t 做語法檢查。
• 善用 sed 命令,可以在非交互模式下快速完成配置修改。
如果你在操作過程中遇到任何問題,Root Shell 就是你的最後一道防線。只要 VPS 還在運行,就能通過 KiwiVM 面板的 Root shell - interactive 進入系統修復。實在修不好,還有重裝系統兜底。所以大膽操作,但記得備份。
以上就是通過搬瓦工 KiwiVM Root Shell 修改 sshd 配置和管理防火牆的完整教程。後續還會有更多關於 KiwiVM 控制面板功能的詳細介紹。有任何疑問歡迎在評論區留言,或加入本站的交流群一起討論。
搬瓦工中文網 — 專業的搬瓦工中文教程站