如何修改Google Cloud Shell应用默认凭据存储路径及重置方法?
问题分析与解决方法
原因说明
gcloud auth application-default login的凭据存储逻辑:默认情况下,这个命令会把凭据写到~/.config/gcloud/application_default_credentials.json。但如果第一次执行时指定了不存在的错误路径(比如拼写错了),gcloud会把这个错误路径存在自己的配置里,之后每次执行都会先尝试往这个错误路径写,失败后就自动 fallback 到临时目录。- 关于
GOOGLE_APPLICATION_CREDENTIALS环境变量:这个变量是给Terraform这类依赖Google SDK的应用指定凭据路径用的,它管不了gcloud auth application-default login命令往哪写凭据——这个命令的写入路径是gcloud自己的配置说了算的。所以哪怕你设了这个变量,命令还是会按自己的配置路径去写,失败就用临时目录,同时因为变量指向的路径和实际生成的路径对不上,系统就会提示你得取消变量设置才能用临时目录里的凭据。
重置修复步骤
查看当前gcloud的凭据路径配置
先确认gcloud里存的凭据路径是否错误,执行:gcloud config get-value auth/application_default_credential_file如果返回的是你之前拼写错误的路径,就需要重置配置。
重置gcloud的凭据路径配置
把配置改回默认路径,执行:gcloud config unset auth/application_default_credential_file或者直接手动指定正确的目标路径:
gcloud config set auth/application_default_credential_file /home/raymond_w_lang/.config/gcloud/application_default_credentials.json重新生成应用默认凭据
再次执行登录命令,此时凭据会写入你指定的正常路径:gcloud auth application-default login适配Terraform的设置
如果要让Terraform使用这个凭据,有两种方式:- 确保
GOOGLE_APPLICATION_CREDENTIALS环境变量指向正确路径,若之前设置过想取消,执行:unset GOOGLE_APPLICATION_CREDENTIALS - 不设置该变量,Terraform会自动读取默认路径
~/.config/gcloud/application_default_credentials.json。
要是想永久设置环境变量,根据你的shell类型修改配置文件(比如bash改~/.bashrc,zsh改~/.zshrc),添加一行:
export GOOGLE_APPLICATION_CREDENTIALS="/home/raymond_w_lang/.config/gcloud/application_default_credentials.json"- 确保
内容的提问来源于stack exchange,提问作者candycrusher420
相关产品推荐
相关产品推荐

