草庐IT

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

圆圆01 2023-04-04 原文

一、问题描述

在 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 你的代码了。

参考

有关Git The requested URL returned error: 403,Token authentication requirements for Git operations的更多相关文章

  1. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  2. Python爬虫403错误的解决方案 - 2

    前言程序使用一段时间后会遇到HTTPError403:Forbidden错误。因为在短时间内直接使用Get获取大量数据,会被服务器认为在对它进行攻击,所以拒绝我们的请求,自动把电脑IP封了。解决这个问题有两种方法。一是将请求加以包装,变成浏览器请求模式,而不再是“赤裸裸”的请求。但有时服务器是根据同一IP的请求频率来判断的,即使伪装成不同浏览器。由于是同一IP访问,还是会被封。所以就有了第二种方法,就是降低请求频率。具体说来也有两种方法。一种是在每次请求时暂停短暂时间,从而降低请求频率。第二种是使用不同的IP进行访问。显然第一种方法不是最佳选择。因为我们并不希望下载太慢,尤其是在请求次数很多时

  3. ruby - `open_http' : 403 Forbidden (OpenURI::HTTPError) 字符串 "Steve_Jobs"但不是任何其他字符串 - 2

    我正在学习http://ruby.bastardsbook.com/提供的Ruby教程我遇到了以下代码:require"open-uri"remote_base_url="http://en.wikipedia.org/wiki"r1="Steve_Wozniak"r2="Steve_Jobs"f1="my_copy_of-"+r1+".html"f2="my_copy_of-"+r2+".html"#readthefirsturlremote_full_url=remote_base_url+"/"+r1rpage=open(remote_full_url).read#writeth

  4. ruby-on-rails - 403 Forbidden on Rails app w/Nginx, Passenger - 2

    首先,道歉:我知道403Forbidden问题是Rails/Nginx安装的常见问题,但到目前为止我读过的答案都没有为我解决。免责声明:这是我第一次在Heroku以外的地方部署Rails应用程序。请温柔点;)情况:我有一个Rails应用程序在Ubuntu12.04服务器上运行,运行Nginx(随Passenger安装)。我已将我的应用程序正确部署到我的服务器,但是当我尝试访问该站点时,我收到403禁止访问错误。检查我的错误日志,我看到:2013/10/2322:47:01[error]27954#0:*105directoryindexof"/var/www/colepeters.co

  5. javascript - HTTP403 : FORBIDDEN - The server understood the request, 但拒绝履行 - 2

    在对API执行AJAX调用时,我不断收到上述403错误。该错误出现在MicrosoftEdge中,但不会出现在IE、Chrome、Firefox或Safari中。该页面不使用Bootstrap,据我所知,这可能是由于该页面无法找到所需的.LESS文件造成的。我什至尝试包含bootstrap以查看是否解决了问题-但没有。我似乎无法通过谷歌搜索找到任何东西,除了一些twitterOauth内容和上面的Bootstrap答案-两者都与我的应用程序无关。正如我之前所说,AJAX调用在除Edge之外的任何浏览器中都可以正常工作。代码在各种浏览器中完全相同,并且响应/请求header相互匹配-因此

  6. javascript - Heroku 403 禁止静态 js 文件 - 2

    我已将我的简单php应用程序推送到Heroku并获得一些js文件的403状态。https://guarded-forest-7267.herokuapp.com/vendor/jquery/dist/jquery.min.jsFailedtoloadresource:theserverrespondedwithastatusof403(Forbidden)https://guarded-forest-7267.herokuapp.com/vendor/jquery-form/jquery.form.jsFailedtoloadresource:theserverrespondedwit

  7. javascript - Heroku vendor 目录中的 js 文件出现 403 错误 - 2

    我的CakePHPv3.x应用程序在我的本地Vagrant环境中运行良好,但是当我部署到Heroku时,对于位于/webroot/vendor/...中的所有javascript文件,我收到403错误/p>该目录外的CSS和javascript文件加载正常。https://example.com/js/i_load_fine.jshttps://example.com/vendor/i_cause_403_error.js/简介web:vendor/bin/heroku-php-apache2Thisquestion听起来很相似,但我检查过并且.htaccess已经有推荐的Rewrit

  8. javascript - 使用 STS 凭证上传 aws-sdk - 403 错误 - 2

    我一直在尝试设置Amazon的STS(安全token服务)来为客户端上传到S3创建临时凭证。我可以使用IAM用户生成的访问key使代码正常工作,但是当我换出访问key/secretkey然后添加sessiontoken时,我收到403禁止访问。S3访问日志不记录尝试。在STS端,我通过aws-sdk为node.js生成凭据,使用与上面相同的IAM用户,SDK愉快地生成STS凭据:letsts=newAWS.STS({apiVersion:'2011-06-15'});sts.assumeRole({RoleArn:'arn:aws:iam::[REMOVED]:role/[REMOVE

  9. javascript - 使用签名 URL 上传到 S3 时获取 403(禁止访问) - 2

    我正在尝试生成预签名URL,然后通过浏览器将文件上传到S3。我的服务器端代码如下所示,它生成URL:lets3=newaws.S3({//fordevpurposesaccessKeyId:'MY-ACCESS-KEY-ID',secretAccessKey:'MY-SECRET-ACCESS-KEY'});letparams={Bucket:'reqlist-user-storage',Key:req.body.fileName,Expires:60,ContentType:req.body.fileType,ACL:'public-read'};s3.getSignedUrl('p

  10. javascript - Meteor 更新集合 - 未捕获错误 : Not permitted. 不受信任的代码可能仅按 ID 更新文档。 [403] - 2

    我是LearnignMeteor,遇到了这种情况,我正在关注关于tutsplus的Meteor教程。代码与视频中的代码完全相同,发生了集合更新,但在我的浏览器中显示了此错误:UncaughtError:不允许。不受信任的代码只能通过ID更新文档。[403]代码在这里:Template.person.events({'click':function(e,t){Session.set("edit-"+t.data._id,true);},'keypressinput':function(e,t){if(e.keyCode===13){vardocid=Session.get("edit-"

随机推荐