Google-Cloud-Platform

使用 gcloud 進行身份驗證不起作用

  • March 16, 2022

幾個月前在我的 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: [bboles@example.com].

WARNING: Listing available projects failed: HttpError accessing <https://cloudresourcemanager.googleapis.com/v1/projects?alt=json&filter=lifecycleState%3AACTIVE&pageSize=201>: response: &lt;{'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}&gt;, content &lt;{
 "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 從bashback 更改為zsh.
  • 下載了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: [bboles@example.com]
Project: [None]

Current Properties:
 [core]
   account: [bboles@example.com]
   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]

要回答這個問題,正如約翰所說,由於 Python 環境的設置混亂,您可能會遇到這個問題。創建另一個使用者登錄作為調試步驟將有助於確定問題。

另一種替代方法,因為它是幾個月前嘗試更新gcloud版本或使用最新的 Cloud SDK 版本重新安裝。

我有同樣的錯誤。刪除 ~/.netrc 為我修復了它。

gcloud 使用的 Requests 庫查找 ~/.netrc。如果該文件以某種形式存在,Requests 會將 OAuth 標頭替換為 Basic auth 標頭。

引用自:https://serverfault.com/questions/1067636