如何在ufw防火墙意外激活后恢复对amazon EC2实例的ssh访问

mne*_*rco 10 ssh amazon amazon-ec2 ubuntu-12.04

我在EC2 ubuntu服务器12.04实例中激活了ufw防火墙,但我忘了允许访问端口22.现在我无法通过ssh连接到实例.此实例是EBS支持的.

mne*_*rco 23

好吧,多亏了EBS,有一个解决方案.

  1. 停止你的实例
  2. 将您的EBS卷附加到另一个实例.如果您没有,请创建一个微实例.
  3. 某处安装 yor EBS卷即./选择/恢复
  4. 项目清单
  5. 编辑{your-ebs-mount} /etc/ufw/ufw.conf并将enabled = yes更改为enabled = no
  6. 卸下 EBS
  7. 从临时实例中分离出来
  8. 重新连接到原始实例.(确保以root身份附加)
  9. 重启实例

现在您的防火墙在您的实例中被禁用,因此您可以通过ssh访问它.

  • 如果您创建新实例,请记住在同一个可用区中创建,因为无法将卷附加到不同的区域。 (2认同)

Ibr*_*sim 11

步骤 1:在实例设置中打开查看/更改用户数据。
第 2 步:添加脚本(如下所述)并保存。

#cloud-config
bootcmd:
- cloud-init-per always fix_broken_ufw_1 sh -xc "/usr/sbin/service ufw stop >> /var/tmp/svc_$INSTANCE_ID 2>&1 || true" 
- cloud-init-per always fix_broken_ufw_2 sh -xc "/usr/sbin/ufw disable>> /var/tmp/ufw_$INSTANCE_ID 2>&1 || true"
Run Code Online (Sandbox Code Playgroud)

第 3 步:重启实例:(机器 ip 将被更改)脚本将在启动时执行,ufw 将被禁用。

现在我们可以通过 ssh 连接实例。

参考(一步一步截图):https : //github.com/ibrahim45/configuration/blob/master/boot_script_instance.md


Rub*_*ary 6

另一种方法,超级简单:最简单的方法是更新实例的用户数据

停止您的实例

在实例上右键单击 (Windows) 或 Ctrl + 单击 (Mac) 打开上下文菜单,然后转至实例设置 -> 编辑用户数据,或选择实例并转至操作 -> 实例设置 -> 编辑用户数据

如果您仍在旧的 AWS 控制台上,请选择实例,转至操作 -> 实例设置 -> 查看/更改用户数据

并粘贴这个

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
ufw disable
iptables -L
iptables -F
--//
Run Code Online (Sandbox Code Playgroud)

添加后,重新启动实例,ssh 应该可以工作。userdata 会禁用 ufw(如果已启用),并且还会刷新任何阻止 ssh 访问的 iptable 规则