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

开启GitLab 2FA后如何使用访问令牌执行git pull操作?

问题原因

你遇到的报错是SSH协议鉴权失败,和你已开通的2FA、提前准备的个人访问令牌无关:

  • 个人访问令牌仅适用于HTTP/HTTPS格式的Git远程地址鉴权,你当前本地仓库用的是SSH格式的远程地址(git@gitlab.com开头),自然不会触发用户名+令牌的输入提示
  • 你执行命令时加了sudo,此时调用的是root用户的SSH配置,即便你当前普通用户的SSH密钥已经绑定到GitLab账号,root用户未配置对应SSH密钥的情况下依然会鉴权失败
解决方案

你可以根据自己的使用习惯二选一:

方案1:继续使用SSH协议(无需使用个人访问令牌)

  • 先确认你当前普通用户的SSH公钥已上传到GitLab账号的SSH密钥配置列表,未上传的话将本地~/.ssh/id_rsa.pub(若你自定义过密钥名则替换为对应公钥文件名)的内容粘贴到GitLab的SSH密钥设置页即可
  • 优先尝试不加sudo直接执行git pull,如果提示本地目录无写入权限,先执行sudo chown -R 你的当前系统用户名:你的用户组 本地仓库根目录路径修改目录归属,后续即可直接用普通用户执行git操作
  • 若确实需要使用sudo执行git操作,将当前用户的SSH密钥复制到root用户的配置目录即可:
    sudo cp ~/.ssh/id_rsa /root/.ssh/ && sudo cp ~/.ssh/id_rsa.pub /root/.ssh/
    
    复制完成后再执行sudo git pull即可正常鉴权

方案2:切换为HTTPS协议使用个人访问令牌鉴权

  • 先修改本地仓库的远程地址格式,将SSH格式替换为HTTPS格式:
    git remote set-url origin https://gitlab.com/你的GitLab用户名/仓库名.git
    
  • 执行git pull,此时会弹出用户名密码输入提示,用户名填你的GitLab登录账号,密码填你提前生成的个人访问令牌即可完成鉴权
  • 如果希望后续操作无需重复输入令牌,执行git config --global credential.helper store,本次输入的凭证会被本地存储,后续操作无需重复填写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:36:03