Ubuntu执行gcloud compute scp提示无活跃选中账号报错排查
问题成因
报错和操作系统差异无直接关联,核心触发原因是你执行传输命令时使用了sudo前缀:
- 你执行的前两条配置命令
gcloud auth login、gcloud config set account均在当前普通用户身份下运行,gcloud生成的账号凭证、活跃账号配置默认存储在当前普通用户的~/.config/gcloud/目录下,仅对当前用户可读 - Ubuntu环境下
sudo执行命令时默认会切换到root用户上下文,重置HOME环境变量为root的家目录/root,此时gcloud会读取/root/.config/gcloud/路径下的配置,该路径下没有你之前登录的账号凭证,因此抛出无活跃账号的错误 - Mac设备未触发该问题,是因为macOS默认sudo配置不会重置HOME环境变量,即使加了sudo前缀,gcloud仍会读取当前普通用户目录下的配置文件
解决方案
按优先级选择以下任意一种方案即可:
- 无特殊权限需求时,直接去掉scp命令前的
sudo前缀。gcloud compute scp默认不需要root权限即可完成传输,执行命令:gcloud compute scp path/to/folder $VM_ID:$REMOTE_DIR --project=$PROJECT_ID --recurse - 如果待传输的本地文件夹权限归属于root、普通用户无读取权限,先将文件夹权限修改为当前用户所有,再用普通用户身份执行scp命令:
sudo chown -R $USER:$USER path/to/folder gcloud compute scp path/to/folder $VM_ID:$REMOTE_DIR --project=$PROJECT_ID --recurse - 特殊场景必须使用root身份执行gcloud命令时,显式指定gcloud读取当前普通用户的配置目录,避免加载root用户的空配置:
sudo CLOUDSDK_CONFIG=~/.config/gcloud gcloud compute scp path/to/folder $VM_ID:$REMOTE_DIR --project=$PROJECT_ID --recurse
内容的提问来源于stack exchange,提问作者Kai Kiat Poh
相关产品推荐
相关产品推荐

