Ubuntu服务器GitLab Runner认证失败排查求助
问题描述
在Ubuntu 24.04 LTS服务器上使用GitLab Runner 17.0-stable运行私有仓库流水线时,推送代码触发流水线后出现如下认证错误:
fatal: Authentication failed for 'https://******.com'
已完成的排查动作:
- 多次核对
config.toml中的Runner注册令牌,确认无误 - 确认Runner在线,且已在项目CI/CD设置中完成注册
- 验证Runner关联用户具备项目仓库的访问权限
可能的原因
- 仓库URL配置错误:
config.toml中的GitLab实例URL或项目克隆路径不完整,导致Runner无法正确定位私有仓库 - Git凭据缓存冲突:Runner主机上的Git缓存了旧的无效凭据,覆盖了Runner自动注入的CI_JOB_TOKEN
- Runner系统用户权限不足:运行Runner的
gitlab-runner用户无法读取Git配置或访问GitLab API获取临时令牌 - SSL证书未信任:GitLab使用自签名证书时,Runner主机未将其加入信任列表,导致HTTPS请求失败,被误判为认证错误
- CI_JOB_TOKEN权限受限:项目CI/CD设置中限制了CI_JOB_TOKEN的仓库访问权限
进一步排查步骤
校验
config.toml中的URL配置
打开/etc/gitlab-runner/config.toml,确认[[runners]]区块下的url(GitLab实例地址)和clone_url(可选)是否完整正确,私有仓库需确保路径指向具体项目。清理Git凭据缓存
切换到gitlab-runner用户,清除全局和本地的Git凭据配置:sudo su - gitlab-runner git config --global --unset credential.helper git config --local --unset credential.helper完成后重新触发流水线,观察错误是否消失。
手动测试仓库克隆
以gitlab-runner用户身份,使用CI_JOB_TOKEN直接克隆仓库(CI_JOB_TOKEN可从流水线日志中获取,或临时生成测试令牌):sudo su - gitlab-runner git clone https://gitlab-ci-token:<你的CI_JOB_TOKEN>@<GitLab域名>/<项目路径>.git若克隆失败,根据错误信息定位问题;若成功,说明流水线配置可能存在异常。
检查
gitlab-runner用户的Git配置
查看该用户的全局Git配置,确认无错误的凭据助手或用户信息:sudo su - gitlab-runner git config --global --list信任GitLab SSL证书(自签名场景)
若GitLab使用自签名证书,将证书添加到系统信任列表:# 下载GitLab证书 openssl s_client -showcerts -connect <GitLab域名>:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > /usr/local/share/ca-certificates/gitlab.crt # 更新证书缓存 update-ca-certificates之后重启GitLab Runner服务:
sudo systemctl restart gitlab-runner检查CI_JOB_TOKEN权限设置
进入项目的Settings > CI/CD > Token Access,确认CI_JOB_TOKEN被允许访问当前仓库(默认开启,若被修改需重新启用)。查看Runner详细日志
实时查看GitLab Runner的系统日志,获取更精准的错误细节:sudo journalctl -u gitlab-runner -f触发流水线后,重点关注日志中关于认证、API请求的错误提示。
内容的提问来源于stack exchange,提问作者Mostafa Tabatabaei

