Google cloud platform 如何在Google云计算实例上从VM外部取消UFW的活动

Google cloud platform 如何在Google云计算实例上从VM外部取消UFW的活动,google-cloud-platform,google-compute-engine,Google Cloud Platform,Google Compute Engine,我在我的Google Cloud Compute debian实例上意外启用了UFW,不幸的是端口22现在被阻塞。我尝试了各种方法进入虚拟机,但我不能 我试图访问trhouth串行端口,但它要求我提供从未设置过的用户和密码 有人知道我能做什么吗 如果我可以“编辑”磁盘上的文件,就可以更改防火墙规则并禁用它。已经考虑在另一个实例上安装虚拟机磁盘,但谷歌不允许“热分离”它 还尝试从虚拟机磁盘的快照创建另一个虚拟机,但当然,新实例也出现了同样的问题 里面有很多重要的文件,无法进入…这是一个经典的例子,

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

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

有人知道我能做什么吗

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

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


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

这是一个经典的例子,当你把钥匙放在屋外关上时

当ssh目前不在Google云平台上工作时,有几种方法可以回到虚拟机中,在我看来,最简单的方法就是利用ssh

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

因此,您可以:

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

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


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

您可以尝试使用google串行端口。从那时起,您可以启用ssh


ufw allow ssh

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

  • 进入你的谷歌云控制台。转到您的VM实例并单击编辑按钮
  • 向下滚动至“自定义元数据”,添加“启动脚本”作为键,添加以下脚本作为值:

    #! /bin/bash
    /usr/sbin/ufw disable
    
  • 单击保存并重新启动实例

  • 删除该启动脚本并单击“保存”,以便在以后的引导中不会执行该脚本

  • 最后有用吗?太棒了!这解决了我使用启动脚本禁用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
    这救了我的命!!非常感谢。