Git The requested URL returned error: 403,Token authentication requirements for Git operations

一、问题描述

在 Sourcetree 上使用 git push 代码的时候报错:The requested URL returned error: 403,表示没有权限来 push 相关代码

二、问题解决

如果你之前在 GitHub 配置过 Personal access tokens,也就是 个人访问令牌,那么出现该问题的原因,可能是 token 过期失效,或者是没有配置 token 导致身份验证失败。

事实上,这个问题困扰我许久,网上资料很少,仅有的一些资料也没有解决我的问题。我是在邮箱里看到一封名为 [GitHub] Your personal access token has expired 的邮件,才突然想到有可能是 token 的问题。

为什么会涉及到 token,简单讲一下背景,主要是因为 GitHub 于 2020 年 12 月 15 日在官方博客发布的文章: Token authentication requirements for Git operations

In July 2020, we announced our intent to require the use of token-based authentication (for example, a personal access, OAuth, or GitHub App installation token) for all authenticated Git operations. Beginning August 13, 2021, we will no longer accept account passwords when authenticating Git operations on GitHub.com.

译过来就是:

2020 年 7 月,我们宣布,我们打算 要求对所有经过身份验证的 Git 操作使用基于令牌的身份验证(例如,个人访问、OAuth 或 GitHub 应用程序安装令牌)。 从 2021 年 8 月 13 日开始,在 GitHub.com 上对 Git 操作进行身份验证时,我们将不再接受帐户密码。

也就是说,2021 年 8 月 13 日之后,我们对 GitHub 上做 Git 操作将无法再使用账户密码来进行身份验证,必须使用基于 token 的身份验证。

这就是为什么开头会讲到 token。

可以看出这项政策才颁布不久,适用的时间也不长,我猜这可能是网上资料比较少的原因。

如果你没有设置过 token,或者忘记怎么设置,可以按下面的操作进行配置:

创建 token

第一步

进入 GitHub 官网,登陆自己的账号。

单击您的个人资料照片,然后单击 Settings(设置)

在这里插入图片描述
第二步

在左侧栏中,单击“Developer settings” (开发人员设置)。
在这里插入图片描述
第三步

在左侧边栏中,单击 Personal access tokens(个人访问令牌)

在这里插入图片描述
第四步

单击右上角的 Generate new token(生成新令牌)按钮

在这里插入图片描述
第五步

进入 token 配置页面,给你的 token 设置一个描述性名称。

在这里插入图片描述
设置 token 有效期限,默认是 30 天。
在这里插入图片描述
第六步

选择你想授予此令牌的范围或权限。要使用令牌从命令行访问存储库,请选择Repo。

在这里插入图片描述

最后

点击 Generate token 按钮,完成创建。

在这里插入图片描述
在这里插入图片描述

警告:将你的令牌视为密码并保留秘密。使用API时,请使用令牌作为环境变量,而不是将它们硬于程序中的程序。

注意:生成的 token 请及时复制下来找个地方保存好,这是因为你再次刷新网页的时候,就没法再看到这个 token 了。切记,切记!

如果你不小心刷新了该页面,但事先却没有复制 token,也不要太担心,删除这个 token,重新创建一个就好了,对,我就是这样做的。

使用 token

前面我们已经创建了一个 token,但 The requested URL returned error: 403 还没有解决。

下面介绍如何使用 token,来解决这个问题。

第一步

进入你的项目文件夹,打开 .git 文件(如果找不到该文件,那是因为这是一个隐藏文件,一般不显示,可以通过设置显示该文件)

第二步

.git 目录中找到 config 文件,并打开。

找到下面的配置

[remote "origin"]
	url = https://github.com/username/repo.git

把生成的 token 拼接到 url 上,这个 url 就是你的远程仓库链接。

拼接后的 url:

https://token@github.com/username/repo.git

也就是说 把你的 token 放到 github.com 前,中间用 @ 来拼接。

  • token 就是前文生成的 token。
  • username 是你的 GitHub 用户名。
  • repo 是你的仓库名。

修改完之后,保存。

问题解决。

现在可以重新 push 你的代码了。

参考

  • 18
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值