几个月前,我在 Mac 上设置了gcloud
cli,它运行正常,但几天前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:
问题不在我的账户上。我可以在另一台机器上通过gcloud
docker 成功登录。我还在 Mac 上创建了一个新的本地账户,并能够gcloud
使用同一个 Google 账户成功设置。我现在不知道是什么导致了这个问题。我所知道的只是,这是我在 Mac 上的本地账户中日常使用环境特有的东西。
以下是我尝试过但无法gcloud
再次工作的步骤:
- 将我的 shell 从 改
bash
回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: [[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