【发布时间】:2020-04-29 15:26:39
【问题描述】:
我在 Google Compute Engine 上有一个 Ubuntu 16.04 虚拟机。
我正在向 etc/network/interfaces 添加一些命令,然后重新启动 vm 以测试它们。他们显然是不正确的,我不能再 ssh 进入我的虚拟机。有没有办法可以在没有 ssh 的情况下编辑 /etc/network/interfaces 文件来恢复我的虚拟机?
【问题讨论】:
我在 Google Compute Engine 上有一个 Ubuntu 16.04 虚拟机。
我正在向 etc/network/interfaces 添加一些命令,然后重新启动 vm 以测试它们。他们显然是不正确的,我不能再 ssh 进入我的虚拟机。有没有办法可以在没有 ssh 的情况下编辑 /etc/network/interfaces 文件来恢复我的虚拟机?
【问题讨论】:
此答案基于文章Resolving getting locked out of a Compute Engine。进行了较小的更正,并检查了 Debian 9 映像的解决方案。
与裸机一样,如果您可以物理访问它,您就有机会访问操作系统。 GCE 虚拟机也是如此:因为您可以访问虚拟机配置,所以您可以进入。
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. 按 Enter。出现登录提示。输入用户名 (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:~#
【讨论】: