GCloud CLI执行ssh命令报“Project ID not found”错误排查求助
GCloud Compute SSH 执行报错排查与解决方案
错误详情
执行实例创建后的SSH命令时返回两种错误,命令如下:
gcloud compute ssh --zone "${GC_REGION}" "${GC_REMOTE_LOGIN}" --command "if [ ! -f \"/etc/original.fstab\" ]; then lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk 'length(\$1) == 3 && \$1 != \"sda\"' > /tmp/drive-letter.tmp; fi";
错误1
ERROR: (gcloud.compute.ssh) Users instance [sXXXXXXX@sty-holdings.com] not found: Project ID not found.
错误2
ERROR: (gcloud.compute.ssh) HttpError accessing <https://oslogin.googleapis.com/v1/users/scott.yacko@sty-holdings.com/loginProfile?alt=json&projectId=savup-production>: response: <{'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'content-encoding': 'gzip', 'date': 'Tue, 25 Jul 2023 19:02:40 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000', 'transfer-encoding': 'chunked', 'status': 500}>, content <{ "error": { "code": 500, "message": "Internal error encountered.", "status": "INTERNAL" } }
背景信息
相同脚本在开发项目中可正常运行,本次为生产级项目。实例创建命令如下:
gcloud compute instances create savup-prod-0001 --zone=us-central1-c --machine-type=e2-small --network-interface=network-tier=PREMIUM,subnet=default,address=34.67.100.152 --metadata=environment=,enable-oslogin=true --maintenance-policy=MIGRATE --provisioning-model=STANDARD --service-account=838247644754-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/cloud-platform --tags=nats,savup-http,savup-https,plaid --no-shielded-secure-boot --no-restart-on-failure --create-disk=auto-delete=yes,boot=yes,device-name=,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230724,mode=rw --shielded-vtpm --shielded-integrity-monitoring --maintenance-policy=MIGRATE --reservation-affinity=any --key-revocation-action-type=stop --create-disk=device-name=savup-prod-0001-nats,mode=rw,name=savup-prod-0001-nats
实例创建成功:
Created [https://www.googleapis.com/compute/v1/projects/savup-production/zones/us-central1-c/instances/savup-prod-0001]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS savup-prod-0001 us-central1-c e2-small 10.128.0.43 34.67.100.152 RUNNING
创建实例前已执行gcloud config set project XXXXXXXXX设置项目ID。
已做排查
- 在非生产项目运行脚本,可正常执行;
- 确认GCloud CLI版本为438.0.0;
- 更换OS镜像为
projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230724; - 再次在非生产项目运行脚本,仍正常。
解决方案
针对两种错误分别处理:
针对错误1(Project ID not found)
- 显式指定项目ID:脚本执行环境可能未正确继承
gcloud config的项目设置,修改SSH命令,添加--project参数指定生产项目:
gcloud compute ssh --project "savup-production" --zone "${GC_REGION}" "${GC_REMOTE_LOGIN}" --command "if [ ! -f \"/etc/original.fstab\" ]; then lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk 'length(\$1) == 3 && \$1 != \"sda\"' > /tmp/drive-letter.tmp; fi";
- 验证用户权限与格式:确认
${GC_REMOTE_LOGIN}是有效的OS Login邮箱格式,且该用户已被授予生产项目的Compute实例访问权限(需至少拥有roles/compute.osLogin角色)。
针对错误2(OS Login 500内部错误)
- 重试命令:500错误多为GCP内部服务临时波动导致,直接重试命令即可。
- 检查OS Login API启用状态:确认生产项目已启用OS Login API,执行以下命令检查:
gcloud services list --enabled | grep oslogin
未启用则执行启用命令:
gcloud services enable oslogin.googleapis.com
- 确认实例元数据配置:验证实例的
enable-oslogin元数据是否正确设置:
gcloud compute instances describe savup-prod-0001 --zone us-central1-c --format="value(metadata.items.enable-oslogin)"
输出应为true。
4. 增加实例启动延迟:实例创建后需时间完成OS Login配置,在脚本中添加延迟再执行SSH命令:
sleep 30 # 之后执行SSH命令
额外排查点
- 手动替换脚本中的变量
${GC_REGION}和${GC_REMOTE_LOGIN}为实际值,在本地终端直接执行SSH命令,排除变量替换错误; - 检查执行gcloud命令的账号是否拥有生产项目的
roles/compute.instanceAdmin或更高权限,确保能访问目标实例。
内容的提问来源于stack exchange,提问作者S. Yacko
相关产品推荐
相关产品推荐

