UFW 开启后 SSH 被锁,最直接恢复方式是通过云服务商控制台 VNC 或物理终端登录服务器,执行放行命令或临时关闭防火墙。此方法适用于无法通过 SSH 远程连接但拥有服务器底层管理权限的场景,风险在于操作期间服务可能短暂中断。
先说结论:恢复访问必须通过非 SSH 通道登录服务器修改防火墙规则,优先放行 22 端口再启用防火墙。
- 先确认:拥有云控制台 VNC 或物理终端访问权限
- 先处理:在本地终端执行 ufw allow 22/tcp 或 ufw disable
- 再验证:使用 ufw status 确认规则生效且 SSH 端口开放
命令速用版
以下命令用于在本地终端恢复 SSH 访问权限,需在拥有直接控制台权限的环境下执行。
# 临时关闭防火墙以恢复连接(紧急止损)
ufw disable
# 放行 SSH 端口后重新启用(推荐方案)
ufw allow 22/tcp
ufw enable
# 查看防火墙状态
ufw status为什么会这样
UFW 默认入站策略为拒绝,启用后未显式放行的端口会被阻断。Ubuntu 及多数 Linux 发行版的 UFW 初始配置中,Incoming 默认策略设为 deny,导致启用防火墙时所有未授权入站连接包括 SSH 立即中断。
分步处理
按顺序执行以下步骤,确保每一步都有明确反馈后再进行下一步。
步骤 1:通过控制台登录
使用云服务商提供的 VNC 网页终端或物理显示器键盘登录服务器,此操作不依赖网络连接。
步骤 2:检查防火墙状态
输入命令 ufw status verbose,确认 Status 显示为 active 且默认策略为 deny incoming。
步骤 3:放行 SSH 端口
输入命令 ufw allow 22/tcp,若 SSH 使用非标准端口,将 22 替换为实际端口号。
步骤 4:重新启用防火墙
若之前执行了 disable,输入 ufw enable,系统会提示确认,输入 y 继续。
怎么验证是否生效
验证分为防火墙规则检查和外部连接测试两部分。
本地检查:执行 ufw status,输出列表中必须包含 22/tcp ALLOW 条目。
远程测试:新开一个终端窗口尝试 SSH 连接,若连接成功且无超时,说明规则生效。
常见坑
操作过程中容易忽略云平台安全组策略和 IPv6 配置,导致防火墙放行后仍无法连接。
云平台安全组:阿里云、腾讯云、AWS 等云厂商拥有独立的安全组防火墙,需在云控制台同时放行 TCP 22 端口。
IPv6 规则:若服务器启用 IPv6,需确保 ufw 规则同时应用于 IPv6,或检查 /etc/ufw/ufw.conf 中 IPv6 设置。
非标准端口:若修改过 SSH 端口配置文件 /etc/ssh/sshd_config,防火墙需放行对应端口而非默认 22。
常见问题
没有控制台权限如何恢复
若无 VNC 或物理终端权限,无法直接修改服务器内部防火墙,需联系服务商重置密码或通过救援模式挂载磁盘修改配置。
放行后仍然连接超时
检查云服务商安全组规则是否拦截了 22 端口,或确认本地网络是否限制了出站 SSH 连接。
UFW 禁用后是否自动删除规则
UFW 禁用不会删除已配置的规则,再次启用时原有 allow 规则依然生效。
参考来源
Ubuntu Community Help, "UFW - Uncomplicated Firewall", https://help.ubuntu.com/community/UFW