針對登錄登入進行疑難解答
本文可協助您針對登入 Azure 容器登錄時可能會遇到的問題進行疑難解答。
徵兆
可能包含下列一或多個專案:
- 無法使用、
az acr login
或兩者登入登錄docker login
- 無法登入登錄,且您收到錯誤
unauthorized: authentication required
或unauthorized: Application not registered with AAD
- 無法登入登錄,而且您收到 Azure CLI 錯誤
Could not connect to the registry login server
- 無法推送或提取映像,而且您收到 Docker 錯誤
unauthorized: authentication required
- 無法使用 存取登錄
az acr login
,而且您收到錯誤CONNECTIVITY_REFRESH_TOKEN_ERROR. Access to registry was denied. Response code: 403. Unable to get admin user credentials with message: Admin user is disabled. Unable to authenticate using AAD or admin login credentials.
- 無法從 Azure Kubernetes Service、Azure DevOps 或其他 Azure 服務存取登錄
- 無法存取登錄並收到錯誤
Error response from daemon: login attempt failed with status: 403 Forbidden
- 請參閱 針對登錄的網路問題進行疑難解答 - 無法使用 Azure CLI 存取或檢視 Azure 入口網站 中的登錄設定或管理登錄
原因
- 您的環境中未正確設定 Docker - 解決方案
- 登錄不存在或名稱不正確 - 解決方案
- 登錄認證無效 - 解決方案
- 登錄公用存取已停用。 登錄上的公用網路存取規則會防止存取 - 解決方案
- 認證未獲得推送、提取或 Azure Resource Manager 作業的授權 - 解決方案
- 認證已過期 - 解決方案
進一步診斷
執行 az acr check-health 命令,以取得登錄環境健康情況的詳細資訊,並選擇性地存取目標登錄。 例如,診斷 Docker 設定錯誤或 Microsoft Entra 登入問題。
如需命令範例,請參閱 檢查 Azure 容器登錄 的健康情況。 如果報告錯誤,請檢閱 錯誤參考 和下列各節以取得建議的解決方案。
如果您無法從 ACR 提取映射到 AKS 叢集,請遵循 AKS 支援檔的指示。
注意
如果有防火牆或網路設定會防止登錄存取,也可能會發生某些驗證或授權錯誤。 請參閱 針對登錄的網路問題進行疑難解答。
可能的解決方案
檢查 Docker 組態
大部分的 Azure Container Registry 驗證流程都需要本機 Docker 安裝,以便向登錄進行驗證,以進行推送和提取映像等作業。 確認 Docker CLI 用戶端和精靈 (Docker Engine) 正在您的環境中執行。 您需要 Docker 用戶端 18.03 版或更新版本。
相關連結:
指定正確的登錄名稱
使用 docker login
時,請提供登錄的完整登入伺服器名稱,例如 myregistry.azurecr.io。 請確定您只使用小寫字母。 範例:
docker login myregistry.azurecr.io
搭配 Microsoft Entra 身分識別使用 az acr login 時,請先 登入 Azure CLI,然後指定登錄的 Azure 資源名稱。 資源名稱是建立登錄時提供的名稱,例如 myregistry (不含網域後綴)。 範例:
az acr login --name myregistry
相關連結:
確認認證以存取登錄
檢查您用於案例的認證有效性,或由登錄擁有者提供給您。 一些可能的問題:
- 如果使用 Active Directory 服務主體,請確定您在 Active Directory 租使用者中使用正確的認證:
- 使用者名稱 - 服務主體應用程式識別碼(也稱為 用戶端識別碼)
- 密碼 - 服務主體密碼(也稱為 客戶端密碼)
- 如果使用 Azure Kubernetes Service 或 Azure DevOps 等 Azure 服務來存取登錄,請確認服務的登錄組態。
- 如果您已使用
--expose-token
選項執行az acr login
,其會啟用登錄登入而不使用 Docker 精靈,請確定您使用使用者名稱00000000-0000-0000-0000-000000000000
進行驗證。 - 如果您的登錄已設定為 匿名提取存取,則從先前 Docker 登入儲存的現有 Docker 認證可能會防止匿名存取。 先執行
docker logout
,再嘗試登錄上的匿名提取作業。
相關連結:
- 驗證概觀
- 具有 Microsoft Entra 識別符的個別登入
- 使用服務主體登入
- 使用受控識別登入
- 使用存放庫範圍的令牌登入
- 使用系統管理員帳戶登入
- Microsoft Entra 驗證和授權錯誤碼
- az acr login reference
確認認證已獲授權存取登錄
確認與認證相關聯的登錄許可權,例如 AcrPull
從登錄提取映像的 Azure 角色,或 AcrPush
推送映像的角色。
使用 Azure CLI 存取入口網站或登錄管理中的登錄,至少 Reader
需要角色或對等許可權才能執行 Azure Resource Manager 作業。
如果您的許可權最近變更為允許入口網站進行登錄存取,您可能需要嘗試瀏覽器中的無痕或私人會話,以避免任何過時的瀏覽器快取或 Cookie。
您或登錄擁有者在訂用帳戶中必須具有足夠的許可權,才能新增或移除角色指派。
相關連結:
- Azure 角色和許可權 - Azure Container Registry
- 使用存放庫範圍的令牌登入
- 使用 Azure 入口網站新增或移除 Azure 角色指派
- 使用入口網站建立可存取資源的 Microsoft Entra 應用程式和服務主體
- 建立新的應用程式祕密
- Microsoft Entra 驗證和授權碼
檢查認證是否未過期
令牌和 Active Directory 認證可能會在定義期間之後過期,以防止登錄存取。 若要啟用存取權,可能需要重設或重新產生認證。
- 如果使用個別 AD 身分識別、受控識別或服務主體進行登錄登入,AD 令牌會在 3 小時後到期。 再次登入登錄。
- 如果使用AD服務主體搭配過期的用戶端密碼,訂用帳戶擁有者或帳戶管理員必須重設認證或產生新的服務主體。
- 如果使用存放 庫範圍的令牌,登錄擁有者可能需要重設密碼或產生新的令牌。
相關連結:
進階疑難排解
如果在 登錄中啟用資源記錄 的收集,請檢閱 ContainerRegistryLoginEvents 記錄。 此記錄會儲存驗證事件和狀態,包括傳入身分識別和IP位址。 查詢登錄驗證失敗的記錄。
相關連結:
下一步
如果您無法在這裡解決問題,請參閱下列選項。
- 其他登錄疑難解答主題包括:
- 社群支持 選項
- Microsoft 問 & 答
- 開啟支援票證 - 根據您提供的資訊,可能會針對登錄中的驗證失敗執行快速診斷