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

无法通过SSH连接Google Cloud Engine实例且存在启动报错如何处理

根因说明

实例依赖的google-compute-engine==2.8.13 Python包缺失/版本不兼容,导致GCP平台配套的所有系统服务(负责SSH密钥同步、元数据脚本执行、实例网络配置等)启动失败,因此你添加的SSH密钥、启动脚本创建用户的操作都没有被实例执行,SSH自然无法连接。

无需登录实例的修复方案

方案一:启动脚本自动修复(优先使用)

你的启动脚本之前未生效,是因为负责执行元数据脚本的google_metadata_script_runner服务异常,未读取到你配置的脚本,本方案会先强制重装GCP guest配套包恢复服务:

  1. 停止故障实例
  2. 编辑实例配置,在自定义元数据板块新增一个键为startup-script的项,值根据你的实例操作系统选择对应脚本:

Debian/Ubuntu 系列实例脚本

#!/bin/bash
apt update
apt install -y --reinstall python3-google-compute-engine google-compute-engine-oslogin google-compute-engine
systemctl restart google-instance-setup google-accounts-daemon google-network-daemon google-metadata-script-runner

CentOS/RHEL/Fedora 系列实例脚本

#!/bin/bash
yum install -y --reinstall python3-google-compute-engine google-compute-engine-oslogin google-compute-engine
systemctl restart google-instance-setup google-accounts-daemon google-network-daemon google-metadata-script-runner
  1. 保存实例配置后重新启动实例,等待3-5分钟待服务恢复后,即可正常通过SSH连接。

方案二:挂载磁盘修复(方案一失效时使用)

如果方案一执行后仍未恢复,可通过挂载故障盘到正常实例的方式修复:

  1. 停止故障实例,在磁盘列表中找到该实例的系统启动盘,卸载该磁盘
  2. 新建一个和故障实例同操作系统版本的临时正常实例,将刚才卸载的故障盘作为数据盘挂载到临时实例
  3. 登录临时实例,执行以下操作:
# 查看磁盘分区名,通常为/dev/sdb1
fdisk -l
# 挂载系统分区
mount /dev/sdb1 /mnt
# 挂载系统运行所需目录
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
# 进入故障盘系统环境
chroot /mnt
  1. 在chroot环境中执行方案一对应操作系统的重装GCP配套包命令,执行完成后退出chroot:
exit
# 卸载所有挂载的目录
umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt
  1. 停止临时实例,卸载故障盘,将故障盘重新挂载回原故障实例作为系统启动盘,启动原实例即可正常连接。

内容的提问来源于stack exchange,提问作者knotmine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:00