我有一个 Ubuntu 16.04 AWS 实例,由于启用了 UFW 而没有允许 SSH 使用端口 22,我意外地将自己锁定在了该实例之外。我创建了一个新实例,并将受影响实例的卷挂载到该实例上。
现在我可以访问受影响实例的文件系统,如何阻止 UFW 在启动时运行,以便我可以再次通过 SSH 访问该实例?或者,如何通过配置文件允许 SSH 访问端口 22?
我在网上查看了一下,我的文件结构似乎与其他人使用的文件结构不匹配。在/media/myDrive/lib/ufw
我没有user.rules
或user6.rules
;这些在/etc/ufw/
。我已user*.rules
按如下方式编辑文件以允许访问,但当我重新启动服务器时,我仍然无法通过 SSH 访问它。
#user.rules
-A ufw-user-input -p tcp --dport 22 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -j ACCEPT
#user6.rules
-A ufw6-user-input -p tcp --dport 22 -j ACCEPT
-A ufw6-user-input -p udp --dport 22 -j ACCEPT
引用自这个SO问题:启用防火墙后无法 ssh 进入 AWS EC2
答案1
您可以尝试通过/etc/ufw/ufw.conf
以下方式在启动时禁用 UFW:
ENABLED=no
答案2
pa4080 的回答似乎就像正确答案一样,但我发现在默认安装 Ubuntu 14.04 后,UFW 阻止了 ping 和 Samba 连接,即使这ENABLED=no
是 中的默认设置/etc/ufw/ufw.conf
。在我停止 UFW 后,service ufw stop
我能够按预期连接到机器。
启动时禁用 UFW
在 Ubuntu 14.10 及更早版本中:sudo echo manual > /etc/init/ufw.override
在 Ubuntu 15.04 及更高版本上:sudo systemctl disable ufw
关于其他任何事情或只是为了确保:sudo echo "service ufw stop" >> /etc/init.d/rc.local