修复损坏 /etc/network/interfaces

Fixing broken /etc/network/interfaces

我在 Google Compute Engine 上有一个 Ubuntu 16.04 虚拟机。

我正在向 etc/network/interfaces 添加一些命令,然后重新启动虚拟机以测试它们。它们显然是不正确的,我无法再通过 ssh 进入我的虚拟机。有没有一种方法可以在没有 ssh 的情况下编辑 /etc/network/interfaces 文件来恢复我的虚拟机?

此答案基于一篇文章 Resolving getting locked out of a Compute Engine。进行了较小的更正,并针对 Debian 9 映像检查了解决方案。

与裸机一样,如果您可以物理访问它,您就有机会访问操作系统。 GCE VM 也是如此:因为您可以访问 VM 配置,所以您可以进入。

1.打开VM实例详情:

GCP Console => Compute Engine => VM instances => instance_name

2. 停止 VM 实例

3. 启用对串行控制台的访问并添加启动脚本以便创建临时用户:

=> Edit =>  
  Enable connecting to serial ports = True 
  Custom metadata
    Key = startup-script
    Value = 
      useradd --groups "google-sudoers" user3
      echo "user3:password" | chpasswd
=> Save

4. 启动虚拟机实例。

5. 启动后,连接到控制台:

=> Connect to serial console

6. 按回车键。出现登录提示。输入用户名 (user3) 和密码 (password)。您将到达 bash shell。登录用户是"google-sudoers"组的成员,所以他可以充当root用户:

$ groups 
  user3 google-sudoers 
$ id 
  uid=1004(user3) gid=1005(user3) groups=1005(user3),1000(google-sudoers) 
$ sudo su - 
root@instance-2:~#