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

GitLab Runner执行git clone认证失败,本地运行正常求助

解决GitLab CI/CD中git clone认证失败问题

错误信息

remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. See https://gitlab.iselection.com/help/topics/git/troubleshooting_git#error-on-git-fetch-http-basic-access-denied
fatal: Authentication failed for 'https://gitlab.xxx.com/xxx/'

流水线YAML配置

variables:
  GIT_SSL_NO_VERIFY: "true""
  TOKEN_NAME: certificate
  TOKEN_VALUE: "xxx"
image: alpine:latest

before_script:
    - apk add git curl openssl openjdk11 bash ca-certificates
    - git clone https://$TOKEN_NAME:$TOKEN_VALUE@gitlab.xxx.com/xxx

已做测试

  • 使用仓库令牌:本地克隆正常,CI/CD流水线失败
  • 个人PAT:本地克隆正常,CI/CD流水线失败
  • 部署令牌:本地克隆正常,CI/CD流水线失败

排查方向与解决办法

1. 修正YAML语法错误

配置中GIT_SSL_NO_VERIFY的值多了一个双引号,会导致变量解析异常,直接修正为:

GIT_SSL_NO_VERIFY: "true"

2. 验证CI/CD变量注入

  • 在before_script中临时添加变量输出命令(测试后删除,避免泄露敏感信息):
    - echo "TOKEN_NAME: $TOKEN_NAME"
    - echo "TOKEN_VALUE: $TOKEN_VALUE"
    
    查看流水线日志,确认变量是否正确注入,是否被项目/组级同名变量覆盖。

3. 检查令牌权限与仓库配置

  • 个人PAT需勾选read_repository权限,且账号对目标仓库有读取权限;部署令牌需勾选read_repository权限,关联仓库正确。
  • 检查目标仓库是否设置IP白名单:若有,需将CI/CD Runner的IP加入允许列表。

4. 优化Git克隆命令

  • 使用GitLab内置的CI_JOB_TOKEN替代自定义令牌(适用于同组/授权项目):
    - git clone https://gitlab-ci-token:$CI_JOB_TOKEN@gitlab.xxx.com/xxx
    
    注意:跨项目访问需在目标仓库的设置 > CI/CD > 流水线中开启"允许从外部项目访问此项目的CI/CD令牌"。
  • 若令牌包含特殊字符(如@、:),需进行URL编码,例如@替换为%40,:替换为%3A。

5. 排查Runner环境

  • 测试Runner网络连通性:
    - curl -v https://gitlab.xxx.com
    
    确认Runner能正常访问GitLab仓库地址。
  • 升级Git版本:Alpine默认git版本可能较旧,尝试指定新版本安装:
    - apk add git=2.40.0-r0
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:58:12