【问题标题】:How to deativate UFW from outside the VM on Google Cloud Compute Instance如何从谷歌云计算实例上的虚拟机外部停用 UFW
【发布时间】:2018-04-25 01:36:49
【问题描述】:

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

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

有人知道我能做什么吗?

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

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

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

【问题讨论】:

  • 最后成功了吗?

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


【解决方案1】:

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

当 ssh 当前无法在 Google Cloud Platform 中运行时,有几种方法可以返回虚拟机,在我看来,最简单的方法是使用 startup script

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

因此你可以:

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

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

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

【讨论】:

  • 太棒了!这解决了我使用启动脚本禁用 ufw 并可以 ssh 到我的实例的相同问题。我使用的脚本是#! /bin/bash\n ufw disable@GalloCedrone 的回答应该被接受!
  • 您可以通过gcloud命令以gcloud compute instances add-metadata example-instance --metadata-from-file startup-script=path/to/file运行上述脚本
  • 为了清楚起见,答案是startup-script=ufw disable
【解决方案2】:

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

ufw 允许 ssh

【讨论】:

    【解决方案3】:

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

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

      #! /bin/bash
      /usr/sbin/ufw disable
      
    3. 点击保存并重启您的实例。

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

    【讨论】:

    • 这救了我的命!!谢谢。
    • 史诗,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2019-04-29
    • 1970-01-01
    • 2017-12-25
    相关资源
    最近更新 更多