打开/关闭搜索
搜索
打开/关闭菜单
54
710
72
2098
md5.pw
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
请求账号
查看“︁通过 Root Shell 修改 sshd 配置与防火墙设置”︁的源代码
来自md5.pw
分享此页面
更多语言
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
通过 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 控制面板当前支持的所有可安装系统。 {| class="wikitable" |'''本文适用场景''' 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 按钮。 {| class="wikitable" |'''功能''' |'''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,回车后输入密码(密码输入时不会显示任何字符,这是正常的),回车即可登录。 {| class="wikitable" |'''关于密码''' Root shell - interactive 使用的是 VPS 的 root 密码,即安装系统时分配的密码。如果忘记了,可以在 KiwiVM 面板的 Root password modification 中重新生成。注意重置密码需要 VPS 处于运行状态。 |} == 1.3 Root shell - basic/advanced 的使用场景 == 虽然本文主要推荐 interactive 模式,但 basic 和 advanced 在某些场景下也有用处。例如你只想快速查看当前 sshd 端口或防火墙状态,用 basic 模式输入一条命令就行,不需要登录完整终端。 常用的快速查看命令: {| class="wikitable" |# 查看当前 SSH 端口 grep -i '^Port' /etc/ssh/sshd_config <nowiki>#</nowiki> 查看 sshd 服务状态 systemctl status sshd <nowiki>#</nowiki> 查看防火墙状态(firewalld) firewall-cmd --state <nowiki>#</nowiki> 查看防火墙状态(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 后缀的配置片段方式加载。但主配置文件路径不变,直接编辑主文件也完全可以。 在开始修改之前,强烈建议先备份原始配置文件: {| class="wikitable" |cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak |} == 2.2 修改 SSH 端口 == 搬瓦工在安装系统时会分配一个随机的高位端口作为默认 SSH 端口,这个端口可以在 KiwiVM 面板的 Main Controls 页面看到。如果需要修改成其他端口,操作步骤如下。 '''步骤一:编辑配置文件''' 在 Root shell - interactive 中登录后,使用 vi 编辑配置文件: {| class="wikitable" |vi /etc/ssh/sshd_config |} 找到 Port 所在的行(可以按 / 然后输入 Port 进行搜索),将端口号修改为你想要的值。如果该行前面有 # 号,需要先去掉注释符。 {| class="wikitable" |# 修改前(可能的形式) <nowiki>#</nowiki>Port 22 Port 28456 <nowiki>#</nowiki> 修改后(例如改为 36912) Port 36912 |} 按 i 进入编辑模式,修改完成后按 Esc,然后输入 :wq 回车保存退出。 {| class="wikitable" |'''端口选择建议''' 建议选择 10000-65535 之间的高位端口,避开常见服务端口(如 80、443、3306、8080 等)。 搬瓦工默认分配的随机端口一般就在这个范围内,如果只是因为端口被封才修改,换一个新的高位端口即可。 |} '''步骤二:处理 SELinux(仅 CentOS / Rocky Linux)''' 如果你的系统是 CentOS 7/8 或 Rocky Linux 9,并且 SELinux 处于 enforcing 状态,直接重启 sshd 会失败。需要先告知 SELinux 允许新端口: {| class="wikitable" | colspan="2" |# 查看 SELinux 状态 getenforce <nowiki>#</nowiki> 如果返回 Enforcing,需要执行以下命令 <nowiki>#</nowiki> CentOS 7: yum install -y policycoreutils-python <nowiki>#</nowiki> CentOS 8 / Rocky Linux 9: dnf install -y policycoreutils-python-utils <nowiki>#</nowiki> 添加新端口到 SELinux 白名单 semanage port -a -t ssh_port_t -p tcp 36912 | |} '''步骤三:配置防火墙放行新端口''' 这一步根据操作系统不同,使用的工具也不一样,详见下面的第三部分。这里先给出通用思路:在修改 sshd 端口之后、重启 sshd 服务之前,要确保防火墙已经放行了新端口。否则重启 sshd 后虽然服务正常运行,但新端口被防火墙拦截,SSH 照样连不上。 '''步骤四:重启 sshd 服务''' {| class="wikitable" |# Rocky Linux 9 建议先做语法检查 sshd -t <nowiki>#</nowiki> 所有系统通用的重启命令 systemctl restart sshd |} 如果 sshd -t 没有任何输出,说明配置文件语法正确。如果有报错,按照提示修改对应行即可。 == 2.3 其他常见 sshd 配置修改 == 除了端口,以下几个 sshd 参数也经常需要调整。同样在 /etc/ssh/sshd_config 中修改: {| class="wikitable" |'''参数''' |'''推荐值''' |'''说明''' | |- |PermitRootLogin |prohibit-password |允许 root 登录但禁止密码方式,仅允许密钥 | |- |PasswordAuthentication |no |禁用密码登录,仅允许密钥登录(需先配好密钥) | |- |PubkeyAuthentication |yes |启用公钥认证 | |- |MaxAuthTries |3 |最大认证尝试次数,减少暴力破解风险 | |- |ClientAliveInterval |300 |每 300 秒发送一次心跳,防止空闲断连 | |- | colspan="4" |'''禁用密码登录前请确认''' 在将 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 状态:''' {| class="wikitable" |ufw status |} 如果返回 Status: inactive,说明 ufw 未启用,防火墙不会阻拦任何端口,此时修改 SSH 端口后不需要额外操作防火墙。 '''如果 ufw 已启用,放行新 SSH 端口的操作:''' {| class="wikitable" |# 放行新端口(例如 36912) ufw allow 36912/tcp <nowiki>#</nowiki> 如果要移除旧端口的放行规则 ufw delete allow 22/tcp <nowiki>#</nowiki> 查看当前规则 ufw status numbered | |- | colspan="2" |'''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 — 重置所有规则为默认 |- | colspan="2" |'''启用 ufw 前注意''' 如果你要首次启用 ufw,一定要先确保已经放行了当前的 SSH 端口,否则启用防火墙的一瞬间就会断开 SSH 连接。通过 Root Shell 操作可以避免这个风险,因为 Root Shell 不走 SSH 通道。 |} == 3.2 CentOS 7/8 — firewalld 防火墙 == CentOS 7 和 CentOS 8 使用 '''firewalld''' 作为默认防火墙管理工具。搬瓦工安装的 CentOS 系统中,firewalld 默认状态不一定是开启的,具体取决于安装的系统模板。 '''查看 firewalld 状态:''' {| class="wikitable" |# 检查服务状态 systemctl status firewalld <nowiki>#</nowiki> 或者直接查看运行状态 firewall-cmd --state |} 如果返回 not running 或者提示服务未找到,说明防火墙未启用。 '''firewalld 已启用时,放行新 SSH 端口:''' {| class="wikitable" |# 永久放行新端口 firewall-cmd --permanent --add-port=36912/tcp <nowiki>#</nowiki> 如果要移除旧端口 firewall-cmd --permanent --remove-port=28456/tcp <nowiki>#</nowiki> 重新加载使永久规则生效 firewall-cmd --reload <nowiki>#</nowiki> 查看当前放行的所有端口 firewall-cmd --list-ports |} '''也可以使用 service 方式管理(推荐用于标准服务):''' {| class="wikitable" |# 查看当前放行的服务 firewall-cmd --list-services <nowiki>#</nowiki> 放行 HTTP/HTTPS firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload | |- | colspan="2" |'''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/ 目录),但防火墙的操作命令完全一样。 {| class="wikitable" |# 查看防火墙状态 firewall-cmd --state <nowiki>#</nowiki> 放行新 SSH 端口 firewall-cmd --permanent --add-port=36912/tcp firewall-cmd --reload <nowiki>#</nowiki> 验证端口已放行 firewall-cmd --list-ports |} Rocky Linux 9 的 firewalld 还支持更高级的区域(zone)管理。默认区域通常是 public,如果你有更精细的安全需求,可以创建自定义区域并设置基于来源 IP 的访问控制。但对于大多数搬瓦工用户来说,直接在默认区域操作就够用了。 == 3.4 旧版 CentOS 6 / 手动安装的 iptables == 虽然搬瓦工目前已不推荐安装 CentOS 6,但如果你的系统使用的是 iptables 而非 firewalld,操作方式如下: {| class="wikitable" |# 放行新端口 iptables -A INPUT -p tcp --dport 36912 -j ACCEPT <nowiki>#</nowiki> 保存规则(CentOS 6) service iptables save <nowiki>#</nowiki> 如果是 Ubuntu/Debian 使用 iptables iptables-save > /etc/iptables.rules <nowiki>#</nowiki> 查看当前规则 iptables -L -n | |- | colspan="2" |'''iptables 规则顺序很重要''' iptables 的规则是按顺序匹配的。如果前面有一条 DROP 所有的规则,后面加的 ACCEPT 不会生效。建议使用 -I 参数将规则插入到链的最前面:iptables -I INPUT -p tcp --dport 36912 -j ACCEPT |} = 四、各系统完整操作流程对比 = 下面这张表把三个系统上修改 SSH 端口的完整流程放在一起对比,方便快速查阅。假设目标端口为 36912。 {| class="wikitable" |'''操作步骤''' |'''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 就派上用场了: {| class="wikitable" |# 1. 进入 Root shell - interactive 并登录 <nowiki>#</nowiki> 2. 查看 sshd 错误日志 journalctl -u sshd -n 20 <nowiki>#</nowiki> 3. 检查配置文件语法 sshd -t <nowiki>#</nowiki> 4. 根据报错信息修复配置 vi /etc/ssh/sshd_config <nowiki>#</nowiki> 5. 或者直接恢复备份 cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config <nowiki>#</nowiki> 6. 重启 sshd systemctl restart sshd |} == 5.3 场景三:防火墙规则写错,把自己锁在外面 == 这个场景也很经典。比如你在配置 iptables 时不小心执行了一条 DROP ALL 规则,或者启用 ufw 时忘了先放行 SSH 端口。处理方法: {| class="wikitable" |# 进入 Root shell - interactive 后 <nowiki>#</nowiki> 方案一:直接关闭防火墙(简单粗暴) <nowiki>#</nowiki> Ubuntu/Debian ufw disable <nowiki>#</nowiki> CentOS / Rocky Linux systemctl stop firewalld <nowiki>#</nowiki> 方案二:清除 iptables 规则 iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT <nowiki>#</nowiki> 方案三:重新配置正确的规则后再启用 <nowiki>#</nowiki> (推荐,修好规则再开防火墙) |} 恢复连接后,再认真重新配置防火墙规则。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 模式下也能执行,不需要交互。 {| class="wikitable" |# 将 SSH 端口从 28456 改为 36912 sed -i 's/^Port 28456/Port 36912/' /etc/ssh/sshd_config <nowiki>#</nowiki> 禁用密码登录 sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config <nowiki>#</nowiki> 修改完后记得重启 sshd systemctl restart sshd | |- | colspan="2" |'''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 控制面板功能的详细介绍。有任何疑问欢迎在评论区留言,或加入本站的交流群一起讨论。 '''[https://www.banwagong.net/ 搬瓦工中文网]''' — 专业的搬瓦工中文教程站 [[Category:200 KiwiVM 简介 — KiwiVM Introduction]]
返回
通过 Root Shell 修改 sshd 配置与防火墙设置
。
查看“︁通过 Root Shell 修改 sshd 配置与防火墙设置”︁的源代码
来自md5.pw