You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Ubuntu实例无法启动且无法SSH,如何进入安全模式并修复服务循环问题

GCP Ubuntu实例无法启动且无法SSH,如何进入安全模式并修复服务循环问题

这种情况我太熟了!之前帮客户处理过好多次——服务循环把实例搞崩连SSH都摸不到,别慌,GCP有两种靠谱的方法能救回来,我给你一步步说:

方法一:用启动脚本强制进入单用户模式(无需额外实例)

这个方法不用新建实例,直接给故障实例加个启动脚本,让它启动时直接进入root控制台:

  1. 先在GCP控制台找到你的故障实例,点击停止,等它彻底停稳
  2. 点击实例的编辑,拉到「自定义元数据」部分,点击添加项
  3. 键填startup-script,值填下面这段脚本:
#!/bin/bash
# 修改GRUB参数,让系统启动时直接进入bash(单用户root模式)
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/GRUB_CMDLINE_LINUX_DEFAULT="init=/bin/bash"/' /etc/default/grub
update-grub
  1. 保存修改,然后启动实例
  2. 回到实例详情页,点击连接→串行控制台,等一会儿就能看到root权限的命令行(不用输密码)
  3. 先把根分区改成读写模式:
mount -o remount,rw /
  1. 现在你就可以排查问题了:
    • 用journalctl -xb看系统日志,找哪个服务在循环崩溃
    • 找到后用systemctl disable 有问题的服务名禁用它
    • 别忘了把GRUB改回去,不然下次启动还是直接进bash:
      sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="init=/bin/bash"/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/' /etc/default/grub
      update-grub
      
  2. 重启实例:reboot,之后应该就能正常SSH了

方法二:挂载故障磁盘到临时实例(更直观,适合新手)

如果串行控制台搞不定,这个方法更稳妥——把故障实例的磁盘拆下来,挂到一个正常的实例上直接改文件:

  1. 停止故障实例,然后在「磁盘」页面找到它的根磁盘,点击分离(别点删除!)
  2. 新建一个临时的Ubuntu实例(和故障实例同区域,省费用还快)
  3. 编辑这个临时实例,拉到「附加磁盘」部分,点击添加磁盘,选择刚才分离的故障磁盘,挂载点可以填/mnt/faulty-disk
  4. SSH进入临时实例,先确认故障磁盘的分区:lsblk,一般是/dev/sdb1
  5. 挂载磁盘:
sudo mount /dev/sdb1 /mnt/faulty-disk
  1. 现在你就像操作本地文件夹一样修改故障系统的文件了:
    • 进入/mnt/faulty-disk/etc/systemd/system/,找可疑的服务文件,重命名禁用它:sudo mv bad-service.service bad-service.service.bak
    • 查看/mnt/faulty-disk/var/log/syslog找崩溃原因
    • 甚至可以直接修改/mnt/faulty-disk/etc/default/grub调整启动参数
  2. 操作完记得卸载磁盘:sudo umount /mnt/faulty-disk
  3. 分离临时实例上的故障磁盘,重新挂载回原来的故障实例,启动试试

小提醒

  • 操作前最好给故障磁盘打个快照,万一改坏了还能恢复
  • 临时实例用完记得删除,避免不必要的收费
  • 串行控制台可能需要等30秒到1分钟才会出现命令行,别着急

备注:内容来源于stack exchange,提问作者RickyLo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:58:12