如何在自定义GitLab Runner中传递凭据?注册遇权限错误
问题场景
使用项目级令牌注册自定义GitLab Runner时,触发如下错误:
remote: HTTP基本认证:访问被拒绝。提供的密码或令牌不正确,或您的账户已启用2FA,必须使用个人访问令牌而非密码。
以下是针对性的解决步骤:
确认项目注册令牌的有效性
登录GitLab项目后台,进入「设置 → CI/CD → 运行器」,重新复制官方提供的项目注册令牌,确保没有误抄空格、换行符或使用了错误的令牌(比如个人访问令牌PAT)。注册Runner必须用项目/组专属的注册令牌,二者不能混用。添加HTTP基本认证凭据(若实例强制验证)
如果你的GitLab实例启用了LDAP、2FA或强制身份验证,注册命令需要额外带上GitLab账户的凭据。可以用个人访问令牌(PAT)替代密码,PAT需具备api或read_repository权限:.\gitlab-runner.exe register --url http://gitlab.my-company.net/ --registration-token $REGISTRATION_TOKEN --user "你的GitLab用户名" --password "你的个人访问令牌"修正命令格式(Windows环境)
Windows下统一使用.gitlab-runner.exe的写法,避免混用./和.\,修正后的注册命令:.\gitlab-runner.exe register --url http://gitlab.my-company.net/ --registration-token $REGISTRATION_TOKEN也可以尝试交互式注册,直接执行
.gitlab-runner.exe register,按照提示输入信息,减少参数格式错误。排查网络与代理问题
确认Runner所在机器能正常访问GitLab实例地址,没有防火墙或代理拦截。如果需要通过代理访问,注册时添加代理参数:.\gitlab-runner.exe register --url http://gitlab.my-company.net/ --registration-token $REGISTRATION_TOKEN --http-proxy http://proxy.my-company.net:8080 --https-proxy http://proxy.my-company.net:8080检查Runner服务的运行账户
默认安装的Runner使用本地系统账户,若该账户无GitLab访问权限,会导致认证失败。可以指定有权限的域账户重新安装:.\gitlab-runner.exe install --user "DOMAIN\Username" --password "账户密码" .\gitlab-runner.exe restart
内容的提问来源于stack exchange,提问作者Imran Qadir Baksh - Baloch

