You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用UFW防火墙未开22端口,重启AWS EC2后无法连接如何解决?

解决EC2 Ubuntu启用UFW后未开22端口导致SSH无法连接的问题

以下是三种可行的恢复方法,按操作复杂度从低到高排序:

方法1:使用EC2串行控制台(推荐,前提是已启用)

  • 登录AWS EC2管理控制台,选中目标实例,点击顶部的「连接」按钮
  • 在连接选项中选择「串行控制台」标签,点击「连接」进入串行终端
  • 使用实例的系统用户名(Ubuntu默认是ubuntu)登录,若未设置密码,可通过之前关联的密钥对生成临时密码,或直接使用sudo权限操作
  • 执行命令开放22端口并生效:
    sudo ufw allow 22/tcp
    sudo ufw reload
    
    若不需要UFW,也可直接禁用:sudo ufw disable
  • 操作完成后即可正常通过SSH连接实例

方法2:通过用户数据自动修复

  • 选中目标EC2实例,点击「操作」→「实例设置」→「编辑用户数据」
  • 在用户数据输入框中填入以下cloud-init脚本:
    #!/bin/bash
    # 开放SSH端口
    ufw allow 22/tcp
    # 重载UFW规则
    ufw reload
    
  • 保存用户数据后,重启实例。系统启动时cloud-init会自动执行脚本,修复防火墙规则
  • 重启完成后即可恢复SSH连接

方法3:挂载根卷到临时实例修改配置

如果前两种方法无法使用,可通过挂载磁盘的方式修改配置:

  1. 停止目标实例:选中实例,点击「操作」→「实例状态」→「停止」(注意:若实例使用非弹性公网IP,停止后IP会释放,需提前记录或绑定弹性IP)
  2. 分离根卷:进入「存储」→「卷」页面,找到目标实例的根卷,右键选择「分离卷」,确认操作
  3. 挂载到临时实例:启动一台正常运行的Ubuntu EC2实例(临时使用),在卷页面选中分离的根卷,点击「操作」→「附加卷」,选择临时实例,设置挂载点为/dev/sdf(或其他未占用的设备名)
  4. 登录临时实例并挂载磁盘:
    # 创建挂载目录
    sudo mkdir /mnt/recovery
    # 挂载分区(需确认分区号,可通过lsblk查看,通常为/dev/sdf1)
    sudo mount /dev/sdf1 /mnt/recovery
    
  5. 修改UFW配置:
    • 方式一:直接禁用UFW:编辑/mnt/recovery/etc/ufw/ufw.conf,将ENABLED=yes改为ENABLED=no
    • 方式二:添加22端口规则:编辑/mnt/recovery/etc/ufw/user.rules,在合适位置添加一行:### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0
  6. 卸载并恢复卷:
    sudo umount /mnt/recovery
    
    回到卷页面,分离该卷,重新附加到原EC2实例,启动原实例即可恢复SSH连接

内容的提问来源于stack exchange,提问作者M.Novian Noor Islamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:28:36