通过 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 控制面板功能的详细介绍。有任何疑问欢迎在评论区留言,或加入本站的交流群一起讨论。
搬瓦工中文网 — 专业的搬瓦工中文教程站