如何从 Google Cloud 计算实例上的虚拟机外部停用 UFW

Dio*_*ann 5 google-compute-engine google-cloud-platform

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

我正在尝试通过串行端口访问,但它要求我提供从未设置的用户名和密码。

有人知道我能做什么吗?

如果我可以“编辑”磁盘上的文件,就可以更改防火墙规则并禁用它。已经考虑将虚拟机磁盘安装在另一个实例上,但 Google 不允许“热分离”它。

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

里面有很多重要文件,进不去……

roc*_*ikz 6

最简单的方法是创建一个禁用ufw. 每当实例启动时就会执行:

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

    #! /bin/bash
    /usr/sbin/ufw disable
    
    Run Code Online (Sandbox Code Playgroud)
  3. 单击保存并重新启动您的实例。

  4. 删除该启动脚本并单击“保存”,这样它就不会在以后的启动中执行。


Gal*_*one 4

这是一个典型的例子,你把自己关在屋外,钥匙却在里面。

当 ssh 当前无法在 Google Cloud Platform 中运行时,有多种方法可以返回虚拟机,从我的角度来看,最简单的方法是使用启动脚本

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

因此您可以:

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

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

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

  • 惊人的!这解决了我使用启动脚本禁用 ufw 并可以 ssh 到我的实例的同样问题。我使用的脚本是`#! /bin/bash\n ufw disable` @GalloCedrone 的答案应该被接受! (2认同)