一、原因
AWS开启防火墙(sudo ufw enable),关闭所有外部对本机的访问(xshell等无法连接),所有端口将会被关闭。
系统:Ubuntu 14.04.4
二、解决方案
1. 登陆AWS管理控制台
2. 停止故障实例(不是终止,终止=停止+删除)
3. 新启动一个临时实例,临时实例系统卷大小无限制,配置尽量与故障实例相同,公网IP可设置可不设置
4. 在左侧 ELASTIC BLOCK STORE 下找到 卷 将故障实例的系统卷断开(一般情况下为挂载在根目录的 /dev/sda1 卷,连接信息为 实例ID (实例名):/dev/sda1 (attached) ,记录下连接信息方便后面使用)
5. 将故障实例系统卷连接到临时实例
6. 开启临时实例并进入临时实例系统控制台
7. 无法直接读取连接到临时实例的故障实例系统卷,可将故障实例系统卷(/dev 目录下)挂载到临时实例的某一文件夹下,进而操作故障实例系统卷。
命令: sudo mount -t ext4 /dev/xvdf test/
解释: 将/dev/xvdf格式化为ext4类型文件系统并挂载到当前路径下text/
-t ext4 将系统卷格式化为ext4类型文件系统(卷内文件不会被删除)
/dev/xvdf 系统卷在临时实例内的名称
test/ 当前路径下的某一文件夹
8. 挂载完成后,通过修改防火墙配置文件 或者 添加开机启动命令 达到关闭防火墙目的。
1) 修改防火墙配置文件:
修改 test/etc/ufw/ufw.conf 文件,将ENABLED 修改为 no . 若文件为只读可先修改文件权限,更改完内容后再改回。
2) 添加开机启动命令
修改 test/etc/rc.local 文件,添加 sudo ufw disable,出现只读情况参考上方
解决方案。
9. 卸载故障实例系统盘(注意:保证没有shell访问挂载点里目录,否则会卸载失败)。
命令:sudo umount test/ /etc/xvdf
10. 关闭临时实例,并将故障实例系统盘重新挂载至故障实例(连接信息在步骤3中记录)。
11. 重新启动故障实例。
12. 使用xshell等测试防火墙是否关闭。
13. 若成功,终止临时实例