gsutil 导致“CommandException:您有多种类型的配置凭据”

Posted

技术标签:

【中文标题】gsutil 导致“CommandException:您有多种类型的配置凭据”【英文标题】:gsutil results in "CommandException: You have multiple types of configured credentials" 【发布时间】:2014-11-01 01:19:07 【问题描述】:

我正在尝试运行 gsutil 命令来列出 Google Cloud Storage 上存储桶中的内容。我几乎可以肯定该命令没有任何问题。

我得到的错误是:

CommandException: You have multiple types of configured credentials (['Oauth 2.0 User Account', 'OAuth 2.0 Service Account']), which is not supported. For more help, see "gsutil help creds".

我已阅读“gsutil help creds”中的详细信息,但其中仅包含四种凭据类型的高级定义,没有帮助。

阅读错误消息,似乎我基本上需要删除“已配置凭据”之一,在这种情况下,我想删除“Oauth 2.0 用户帐户”凭据。并使用“OAuth 2.0 服务帐号”。

因此,我查看了包含自动生成的配置凭据的“.boto”文件,但看起来没有可以编辑的 Oauth 2.0 用户帐户。

我还尝试在 Google 的开发者控制台中挖掘以删除 Oauth 2.0 用户帐户,但我无法做到。

基本上,我的问题(假设它是正确的问题),如何删除 Google Cloud Platform 中的“Oauth 2.0 用户帐户”凭据?

【问题讨论】:

【参考方案1】:

请运行:

gsutil -D

调试输出将包括 config_file_list,它应该向您显示多个凭据的定义位置。

您是否使用 Google Compute Engine 运行?发生此问题的常见方式是当 GCE 已经创建服务帐户凭据(在 /etc/boto.cfg 中)时,用户在 ~/.boto 中为 gsutil 配置凭据(使用 gsutil config)

【讨论】:

谢谢!这帮助我弄清楚了这个问题。该输出有一个列表:config_file_list,它读取的其中一个配置似乎是我过去设置的旧配置。包含旧配置的目录是:/.config/gcloud/legacy_credentials/[MY_EMAIL_ADDRESS]/.boto 我完全删除了目录legacy_credentials,这解决了问题。 在我的情况下(即 MacOS),我也删除了用户目录中的 .boto 文件:/Users/your_user/.boto【参考方案2】:

您是否尝试运行gcloud auth

Usage: gcloud auth [optional flags] <command>
  command may be         activate-refresh-token | activate-service-account |
                         list | login | revoke

Manage oauth2 credentials for the Google Cloud SDK.

optional flags:
  --format FORMAT        Format for printed output.
  --help                 Display detailed help.
  --project PROJECT      Google Cloud Platform project to use for this
                         invocation.
  --quiet, -q            Disable all interactive prompts.
  -h                     Print a summary help and exit.

commands:
  activate-refresh-token
                         Get credentials via an existing refresh token.
  activate-service-account
                         Get credentials via the private key for a service
                         account.
  list                   List the accounts for known credentials.
  login                  Get credentials for the tools in the Google Cloud SDK
                         via a web flow.
  revoke                 Revoke authorization for credentials.

【讨论】:

以上是关于gsutil 导致“CommandException:您有多种类型的配置凭据”的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 更新破坏了 gcloud 和 gsutil

gsutil 无法验证 Kafka Connect S3 上传的文件的哈希值

权限被拒绝的 gsutil cp 错误

如何使用 gsutil 将多个 csv 文件连接成一个具有单个标题的 csv 文件

Gsutil - 如何使用 Gsutil 检查 GCS 存储桶(子目录)中是不是存在文件

使用 gsutil 下载