You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab升级至14.0.1后执行docker login报HTTP Basic访问被拒绝错误

报错信息:执行docker login registry.com:8443时返回 https://registry.com unauthorized: HTTP Basic: Access denied

排查处理步骤
  • 适配Gitlab 14.0+的身份认证规则变更:Gitlab 14.0及以上版本默认要求,如果账号开启了两步验证(2FA),不能直接使用Gitlab账号密码登录容器镜像仓库,必须使用具备对应权限的个人访问令牌(PAT)作为密码进行登录操作,开启2FA的账号直接使用原密码登录必然返回401错误。
  • 验证登录凭证的权限范围:
    • 无论是否开启2FA,都建议先前往Gitlab个人设置的「访问令牌」页面,创建一个勾选了read_registry(拉取镜像权限)、write_registry(推送镜像权限)的个人访问令牌,用该令牌替换原密码,执行命令docker login registry.com:8443 -u <你的Gitlab用户名> -p <生成的PAT>测试登录
    • 不要使用项目部署令牌、CI作业令牌测试全局registry登录,这类令牌仅能访问对应项目下的镜像仓库,无法通过全局登录校验
  • 检查Gitlab Registry服务升级后的配置状态:
    • 登录Gitlab服务器,执行gitlab-ctl status registry确认registry服务运行正常,无异常崩溃或重启
    • 执行命令gitlab-ctl tail registry实时查看registry日志,在K8s节点触发登录操作时,观察日志返回的具体错误类型,判断是凭证校验失败还是权限匹配失败
    • 检查Gitlab主配置文件/etc/gitlab/gitlab.rb中registry['token_realm']配置项是否指向正确的Gitlab实例地址,升级过程中如果域名配置被意外覆盖,会导致token校验全量失败
  • 排查K8s节点侧的环境干扰:
    • 确认K8s节点可以正常解析registry.com:8443地址,且没有代理、防火墙规则拦截节点到Gitlab Registry的请求
    • 清理节点本地的Docker认证缓存:删除~/.docker/config.json文件中对应registry.com:8443的认证条目后重新尝试登录,避免旧缓存干扰校验逻辑
  • 校验Gitlab账号状态:
    • 确认使用的Gitlab账号未被锁定、未过期,且具备目标镜像仓库的对应访问权限
    • 如果是LDAP同步的账号,确认升级后LDAP认证配置未发生变更,账号同步状态正常

内容的提问来源于stack exchange,提问作者raki1205

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 01:36:01