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

GitLab迁移后执行git push origin main报错401 Unauthorized求助

GitLab迁移后git push报401 Unauthorized问题解决

问题描述

近期完成GitLab服务器迁移,网页访问仓库结构正常,但执行git push origin main时出现报错,具体信息如下:

lucas_a@NB04 MINGW64 /c/temp/git/aulagitlab (main) $ git push origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 224 bytes | 74.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
remote: GitLab: 401 Unauthorized
To gitlab.domain.com.br:tecnica/aulagitlab.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'gitlab.domain.com.br:tecnica/aulagitlab.git'

已检查仓库权限、禁用Git LFS,仍无法解决。

解决步骤

  • 清理并重新配置本地Git凭据
    迁移后服务器认证信息变更,本地存储的旧凭据可能失效:

    • Windows:打开「凭据管理器」→「Windows凭据」,找到Git相关的条目删除,重新执行push时输入新的认证信息。
    • Linux/macOS:执行git credential-manager erase,按提示输入服务器地址、用户名,清除旧凭据后重新push。
  • 确认远程仓库地址正确性
    执行git remote -v查看origin地址是否指向新GitLab服务器,若地址错误,执行git remote set-url origin gitlab.domain.com.br:tecnica/aulagitlab.git更新为正确地址。

  • 使用个人访问令牌(PAT)替代密码认证
    GitLab多数场景已禁用密码直接认证,需生成具备write_repository权限的PAT:

    1. 登录新GitLab网页,进入「用户设置」→「访问令牌」;
    2. 勾选write_repository权限,生成令牌;
    3. 执行push时,用户名填GitLab账号,密码填入生成的PAT。
  • 检查服务器端pre-receive钩子
    报错提示pre-receive hook declined,需排查仓库钩子:

    1. 登录GitLab服务器,找到对应仓库的hooks目录(通常在/var/opt/gitlab/git-data/repositories/tecnica/aulagitlab.git/hooks);
    2. 检查pre-receive脚本的权限(需设置为chmod +x pre-receive),以及脚本内配置是否指向旧服务器;
    3. 可暂时重命名pre-receive为pre-receive.bak,测试能否正常push,若可以则说明钩子脚本存在问题。
  • 验证SSH密钥配置(若使用SSH方式)
    若远程地址为SSH格式:

    1. 检查本地~/.ssh/id_rsa.pub内容是否已添加到新GitLab账号的「SSH密钥」列表中;
    2. 确认服务器端sshd配置允许密钥认证,本地SSH配置无错误指向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:00:21