打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的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 控制面板功能的详细介绍。有任何疑问欢迎在评论区留言,或加入本站的交流群一起讨论。

搬瓦工中文网 — 专业的搬瓦工中文教程站