如何在Google Cloud Compute Instance上从VM外部取消激活UFW

时间:2018-04-25 01:36:49

标签: google-cloud-platform google-compute-engine

我意外地在我的Google Cloud Compute debian实例上启用了UFW,不幸的是端口22现在已被阻止。我已经尝试过各种方式进入虚拟机,但我无法......

我试图访问trhougth串口,但它要求我提供从未设置的用户和密码。

有谁知道我该怎么办?

如果我可以编辑'磁盘上的文件,可以更改防火墙规则并禁用它。已经考虑过在另一个实例上安装VM磁盘,但谷歌不允许"热分离"它

还尝试从VM磁盘的快照创建另一个VM,但当然,新实例也遇到了同样的问题。

里面有很多重要文件,无法进入...

3 个答案:

答案 0 :(得分:2)

最简单的方法是创建一个禁用ufw的启动脚本。实例启动时将执行该操作:

  1. 进入您的Google Cloud Console。转到您的VM实例,然后单击“编辑”按钮。
  2. 向下滚动到“自定义元数据”,然后添加“ startup-script”作为键,并添加以下脚本作为值:

    #! /bin/bash
    /usr/sbin/ufw disable
    
  3. 单击“保存”并重新启动实例。

  4. 删除该启动脚本,然后单击“保存”,以使其在以后的启动中不会执行。

答案 1 :(得分:1)

这是一个典型的例子,当你用钥匙在屋外关闭自己。

当ssh目前无法在Google Cloud Platform中运行时,有多种方法可以重新进入虚拟机,从我的观点来看,最简单的方法是使用startup script

您可以使用它们在计算机启动时以Root身份运行脚本,这样您基本上可以在不访问虚拟机的情况下更改配置。

因此你可以:

  • 只需启动一些命令即可停用UFW,然后再次访问该机器

  • 如果还不够并且您需要访问以修复配置,您可以为root用户设置用户和密码,使用启动脚本,然后通过串行控制台访问,因此无需ssh(基本上就像你的键盘直接连接到硬件一样)。 请注意,一旦您访问实例,请删除或至少更改您刚刚使用的密码对有权访问该项目的人员可见。更安全的方法是将密码写在存储桶上的私有文件中,然后使用启动脚本将其下载到实例上。

请注意,您可以将命令输出重定向到文件,然后将文件上传到存储桶,如果您需要调试脚本,读取文件内容,了解正在发生的事情等等。

答案 2 :(得分:1)

您可以尝试使用google串行端口。从那时起,您可以启用ssh https://cloud.google.com/compute/docs/instances/interacting-with-serial-console

ufw允许ssh