为什么我在 Container Registry中收到 Authorization required
错误?
您正在尝试访问 IBM Cloud® Container Registry,但收到 Authorization required
个错误。
当您尝试访问 Container Registry 时,会收到以下信息之一。
Authorization required. See https://cloud.ibm.com/docs/Registry?topic=Registry-troubleshoot-auth-req
You were not authorized to complete this operation.
CRG0014E An error occurred when authenticating your request with IBM Cloud. Clear your browser cookies, log in to IBM Cloud, and try your request again.
Status code 401 Unauthorized
,如果您正在使用 IBM Cloud Code Engine,那么可能会看到此消息,请参阅 为什么在使用 Code Engine时收到Unauthorized
错误? 以获取帮助。UNAUTHORIZED: Authorization required
,如果您正在将cosign
与 Podman配合使用,那么可能会看到此消息,请参阅 为什么在使用 Podman时尝试使用cosign
拉取映像时迂到问题? 以获取帮助。
下列替代方法是可能的原因:
场景 A. 您正在尝试推送或拉取映像,但您没有有效的凭证。
- 您尝试使用无效的 API 密钥登录到 Container Registry。
- 您尝试在未登录的情况下访问 Container Registry。
- 客户机尝试在没有不记名令牌的情况下访问 Container Registry。
- 客户机尝试使用已到期的 OAuth 令牌访问 Container Registry。
有关如何解决此问题的更多信息,请参阅 场景 A. 您正在尝试推送或拉取映像。
方案 B. 您已登录到 Container Registry的错误区域。 要检查您登录到的区域,请运行 ibmcloud cr region
命令。
有关如何解决此问题的更多信息,请参阅 方案 B. 您已登录到错误的区域。
场景 C。 您正在尝试使用 API。
- 您尝试使用无效的 API 密钥向 Container Registry API 进行认证。
- 您尝试使用无效的帐户标识向 Container Registry API 进行认证。
有关如何解决此问题的更多信息,请参阅 方案 C。您正在尝试使用 API。
可以通过以下方式来解决此问题:
场景 A. 您正在尝试推送或拉取图像
您无法访问 Container Registry,因为您没有有效的凭证。
您可以通过以下方法解决这些问题:
- 检查有关将客户机记录到 Container Registry中的信息,请参阅 将映像推送到名称空间。
- 使用用户名
iamapikey
和 API 密钥作为密码,创建并使用有效的 IAM API 密钥将客户机 (例如 Docker) 记录到 Container Registry 中。 有关更多信息,请参阅管理用户 API 密钥。 - 使用自动化访问 Container Registry 时,请设置服务标识和 API 密钥。 有关更多信息,请参阅 访问 Container Registry。
方案 B. 您已登录到错误的区域
无法访问 Container Registry,因为您已登录到错误的区域。
要检查您登录到的区域,请运行 ibmcloud cr region
命令。
可以通过以下方式来解决此问题:
如果您的图像位于 Container Registry 的不同区域,则必须通过运行以下命令在正确的区域登录 IBM Cloud。
ibmcloud cr region-set REGION
,其中REGION
是区域的名称,请参阅 本地区域。ibmcloud cr login
有关更多信息,请参阅 以本地区域为目标。
场景 C. 您正在尝试使用 API
无法访问 Container Registry,因为您尝试使用无效的 API 密钥或帐户标识向 Container Registry API 进行认证。
可以通过以下方式来解决此问题:
- 使用
ibmcloud
CLI 或 IAM API 来检索有效 OAuth 令牌,以向 Container Registry API 进行认证。 有关更多信息,请参阅 IBM Cloud Container Registry API-认证。 - 向 Container Registry API 进行认证时,请确保使用有效的帐户标识。 您可以通过运行
ibmcloud account show
命令来检索帐户标识。