切換選單
切換偏好設定選單
切換個人選單
尚未登入
若您做出任何編輯,會公開您的 IP 位址。

通過 Root Shell 修改 sshd 配置與防火牆設置

出自md5.pw
這是此頁面最近一次修訂;沒有已批准修訂。

搬瓦工 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


# 查看 sshd 服務狀態

systemctl status sshd


# 查看防火牆狀態(firewalld)

firewall-cmd --state


# 查看防火牆狀態(ufw)

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


# 修改後(例如改為 36912)

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


# 如果返回 Enforcing,需要執行以下命令

# CentOS 7:

yum install -y policycoreutils-python


# CentOS 8 / Rocky Linux 9:

dnf install -y policycoreutils-python-utils


# 添加新埠到 SELinux 白名單

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


# 放行 HTTP/HTTPS

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


# 放行新 SSH 埠

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


# 保存規則(CentOS 6)

service iptables save


# 如果是 Ubuntu/Debian 使用 iptables

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 並登錄


# 2. 查看 sshd 錯誤日誌

journalctl -u sshd -n 20


# 3. 檢查配置文件語法

sshd -t


# 4. 根據報錯信息修復配置

vi /etc/ssh/sshd_config


# 5. 或者直接恢復備份

cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config


# 6. 重啟 sshd

systemctl restart sshd

5.3 場景三:防火牆規則寫錯,把自己鎖在外面

這個場景也很經典。比如你在配置 iptables 時不小心執行了一條 DROP ALL 規則,或者啟用 ufw 時忘了先放行 SSH 埠。處理方法:

# 進入 Root shell - interactive 後


# 方案一:直接關閉防火牆(簡單粗暴)

# Ubuntu/Debian

ufw disable


# CentOS / Rocky Linux

systemctl stop firewalld


# 方案二:清除 iptables 規則

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


# 修改完後記得重啟 sshd

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 控制面板功能的詳細介紹。有任何疑問歡迎在評論區留言,或加入本站的交流群一起討論。

搬瓦工中文網 — 專業的搬瓦工中文教程站