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

时间:2014-09-07 19:09:55

标签: oauth google-oauth google-cloud-storage gsutil google-cloud-platform

我尝试运行gsutil命令列出Google云端存储中存储桶中的内容。我几乎可以肯定这个命令没什么问题。

我得到的错误是:

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用户帐户,但我无法做到。

基本上,我的问题(假设它是正确的问题),如何删除" Oauth 2.0用户帐户" Google云端平台中的凭据?

2 个答案:

答案 0 :(得分:5)

请运行:

gsutil -D

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

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

答案 1 :(得分:1)

您是否尝试过运行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.