Git LFS克隆传递Basic Auth认证头出现重复认证400错误如何解决
问题结论
你的操作思路本身没有逻辑问题,400 Bad Request报错的根本原因是Git LFS默认会继承Git的http.extraheader配置,和你主动传入的认证头重复,导致Nginx无法识别请求直接返回400。
修复方案
下面提供三种适配不同场景的解决方案:
- 方案1:直接在URL中嵌入认证信息(推荐单次操作使用)
不用手动生成base64编码的认证头,直接把用户名和PAT写到仓库URL中,Git和LFS会自动识别处理认证,不会出现头重复问题,命令如下:
git lfs clone https://PlatinumDeployToken:asdasdLg9VVxBEzPp@gitlab.inside.com/Platinum/TRXN_LFS.git "C:\testheaders" --branch "PRODUCTION"
- 方案2:新增LFS头配置覆盖默认继承(适合需要隐藏PAT避免日志泄露的场景)
如果不希望PAT明文出现在URL日志中,保持原有认证头生成逻辑的同时,新增一个空的lfs.http.extraheader配置,阻止LFS继承Git的认证头,修改后的克隆命令如下:
git lfs clone -c http.extraheader="AUTHORIZATION: basic $auth_basic" -c lfs.http.extraheader="" https://gitlab.inside.com/Platinum/TRXN_LFS.git "C:\testheaders" --branch "PRODUCTION"
- 方案3:仓库级固定配置(适合长期使用该仓库的场景)
如果后续需要频繁对该仓库执行pull、push操作,可以在首次克隆完成后,进入仓库目录执行以下命令,本地保存配置不用每次操作带参数:
git config http.extraheader "AUTHORIZATION: basic $auth_basic" git config lfs.http.extraheader ""
注意事项
你使用的是部署令牌,需要确认令牌已经勾选了仓库读写、LFS读写权限,避免修复头重复问题后出现403权限报错。
内容的提问来源于stack exchange,提问作者Manuel Villanueva
相关产品推荐
相关产品推荐

