使用 gcloud 进行身份验证不起作用

使用 gcloud 进行身份验证不起作用

几个月前,我在 Mac 上设置了gcloudcli,它运行正常,但几天前gcloud出现了错误,因为它说我未通过身份验证。我运行gcloud auth login成功,没有产生任何错误。但是,任何后续gcloud命令都失败并出现错误。例如:

gcloud projects list
ERROR: (gcloud.projects.list) UNAUTHENTICATED: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.

然后,我撤销了我的凭证,备份了我的~/.config/gcloud/目录,然后将其删除,尝试重新开始gcloud init。 的第一部分gcloud init成功了,我得到了“您现在已通过 Google Cloud SDK 进行身份验证!”网页,但提示您设置默认项目的后续步骤失败,并出现以下错误:

You are logged in as: [[email protected]].

WARNING: Listing available projects failed: HttpError accessing <https://cloudresourcemanager.googleapis.com/v1/projects?alt=json&filter=lifecycleState%3AACTIVE&pageSize=201>: response: <{'www-authenticate': 'Bearer realm="https://accounts.google.com/"', 'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'content-encoding': 'gzip', 'date': 'Wed, 23 Jun 2021 21:15:37 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'server-timing': 'gfet4t7; dur=20', 'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', 'transfer-encoding': 'chunked', 'status': 401}>, content <{
  "error": {
    "code": 401,
    "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}
>
Enter project id you would like to use:

问题不在我的账户上。我可以在另一台机器上通过gclouddocker 成功登录。我还在 Mac 上创建了一个新的本地账户,并能够gcloud使用同一个 Google 账户成功设置。我现在不知道是什么导致了这个问题。我所知道的只是,这是我在 Mac 上的本地账户中日常使用环境特有的东西。

以下是我尝试过但无法gcloud再次工作的步骤:

  • 将我的 shell 从 改bashzsh
  • 下载了gcloud包含 Python 解释器的档案。
  • 跟着gcloud init卸载说明
  • 将正常工作的机器上的内容~/.config/gcloud/与非正常工作的本地帐户中同一目录中的内容进行比较,包括 sqlite 文件中的内容(没有任何内容丢失或损坏)。
  • 运行gcloud init并使用不同的浏览器。
  • 跑步gcloud init --console-only
  • gcloud init在我被删除的 shell 中运行.bash_profile,因此我的 shell 自定义都不再是影响因素。

如果我不得不猜测导致问题的原因,可能是我安装了新程序或对现有工具进行了定期更新。我查看了所有更新内容,以找出罪魁祸首,但没有发现任何实质性问题。

如果我能使用任何其他途径来进一步调试,或者使用任何方法来“重置”gcloud可能接触到的任何东西,我将不胜感激!

相关gcloud info输出:

Google Cloud SDK [346.0.0]

Platform: [Mac OS X, x86_64] uname_result(system='Darwin', node='Brandons-MacBook-Pro.local', release='19.6.0', version='Darwin Kernel Version 19.6.0: Thu May  6 00:48:39 PDT 2021; root:xnu-6153.141.33~1/RELEASE_X86_64', machine='x86_64', processor='i386')
Locale: ('en_US', 'UTF-8')
Python Version: [3.8.8 (default, Mar 22 2021, 17:49:45)  [Clang 11.0.3 (clang-1103.0.32.62)]]
Python Location: [/Users/bboles/.pyenv/versions/3.8.8/bin/python3]
Site Packages: [Disabled]

Installation Root: [/Users/bboles/tools/google-cloud-sdk]
Installed Components:
  gsutil: [4.63]
  core: [2021.06.18]
  bq: [2.0.69]
System PATH: [/Users/bboles/.pyenv/versions/3.8.8/bin:/usr/local/Cellar/pyenv/2.0.1/libexec:/usr/local/Cellar/pyenv/2.0.1/plugins/python-build/bin:/Users/bboles/.rbenv/shims:/Users/bboles/.rbenv/bin:/Users/bboles/.pyenv/shims:/Users/bboles/.pyenv/bin:/Users/bboles/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/bboles/tools/google-cloud-sdk/bin:/Users/bboles/.rbenv/shims:/Users/bboles/.rbenv/bin:/Users/bboles/.pyenv/shims:/Users/bboles/.pyenv/bin:/Users/bboles/bin:/usr/local/opt/mysql-client/bin:/sbin:/usr/sbin:/usr/local/opt/mysql-client/bin]
Python PATH: [/Users/bboles/tools/google-cloud-sdk/lib/third_party:/Users/bboles/tools/google-cloud-sdk/lib:/Users/bboles/.pyenv/versions/3.8.8/lib/python38.zip:/Users/bboles/.pyenv/versions/3.8.8/lib/python3.8:/Users/bboles/.pyenv/versions/3.8.8/lib/python3.8/lib-dynload]
Cloud SDK on PATH: [True]
Kubectl on PATH: [/usr/local/bin/kubectl]

Installation Properties: [/Users/bboles/tools/google-cloud-sdk/properties]
User Config Directory: [/Users/bboles/.config/gcloud]
Active Configuration Name: [default]
Active Configuration Path: [/Users/bboles/.config/gcloud/configurations/config_default]

Account: [[email protected]]
Project: [None]

Current Properties:
  [core]
    account: [[email protected]]
    disable_usage_reporting: [True]

Logs Directory: [/Users/bboles/.config/gcloud/logs]
Last Log File: [/Users/bboles/.config/gcloud/logs/2021.06.23/16.05.57.047852.log]

git: [git version 2.32.0]
ssh: [OpenSSH_8.1p1, LibreSSL 2.7.3]

答案1

要回答这个问题,正如 John 所说,您可能由于 Python 环境设置混乱而遇到此问题。创建另一个用户登录作为调试步骤将有助于确定问题。

另一种替代方法是,由于这是一个月前尝试更新gcloud版本或使用最新的 Cloud SDK 版本重新安装。

答案2

我遇到了同样的错误。删除 ~/.netrc 就可以解决这个问题。

gcloud 使用的 Requests 库会查找 ~/.netrc。如果该文件以某种形式存在,Requests 会将 OAuth 标头替换为 Basic auth 标头。

答案3

我正在运行gcloud auth login从堡垒主机对我的谷歌云帐户进行身份验证,该堡垒主机是已预装 gcloud-CLI 的谷歌实例,但命令失败,因此我继续通过运行以下命令升级 gcloud-CLI gcloud components update --> 问题已得到解决

答案4

就我而言,我得到了非常类似的错误

gcloud projects list
ERROR: (gcloud.projects.list) UNAUTHENTICATED: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
- '@type': type.googleapis.com/google.rpc.ErrorInfo
  domain: googleapis.com
  metadata:
    method: google.cloudresourcemanager.v1.Projects.ListProjects
    service: cloudresourcemanager.googleapis.com
  reason: CREDENTIALS_MISSING 

但它是为了创建测试配置本地 Spanner 模拟器,创建于

gcloud config configurations create emulator
gcloud config set auth/disable_credentials true
gcloud config set project your-project-id
gcloud config set api_endpoint_overrides/spanner http://localhost:9020/

要禁用测试配置模拟器,您需要运行

gcloud config configurations activate default

gcloud config configurations activate emulator

参考https://cloud.google.com/spanner/docs/emulator

相关内容