当我尝试使用git pull时,我在控制台上得到了这个错误:

remote:在2021年8月13日删除了对密码认证的支持。请改用个人访问令牌。 remote:请参阅https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/了解更多信息。 致命:无法访问“…”:请求的URL返回错误:403

这很奇怪,因为我只是在两周前按照文档在GitHub上创建了一个令牌。该代币将于2021年10月26日周二到期。为什么今天这个被删除了?


当前回答

作为安全预防措施,GitHub会自动删除一年未使用的个人访问令牌。为了提供额外的安全性,我们强烈建议为您的个人访问令牌添加过期时间。

只需遵循创建令牌。

其他回答

在GitHub中从设置→开发人员设置生成访问令牌。

如果你在过去克隆了你的存储库,并将其作为原始存储库,那么你可以更改身份验证,

git remote set-url origin https://<token>@github.com/<username>/<repo>.git

如果您打算在2021年8月13日之后克隆存储库,那么您可以使用普通克隆命令并在密码字段设置生成的访问令牌。

Windows用户的快速解决方案

打开凭证管理器,删除已经保存的Git凭证:https://github.com。

该步骤完成后,在终端中再次执行拉/推命令。GitHub会自动要求使用默认浏览器登录(请确保您在默认浏览器中使用GitHub登录)。

登录成功后,我们得到这样的消息:

要获得更多相关的帮助,你也可以观看这个视频。

这条消息意味着您正在使用密码而不是个人访问令牌通过HTTPS访问GitHub,这将不再被允许。GitHub已经禁用了密码认证,因为人们不小心泄露密码是很常见的,虽然可以限制个人访问令牌来限制损害,但密码却不能。

如果您没有在提示下显式地输入密码,那么很可能您有一个凭据管理器,它保存了您的密码,并在没有提示的情况下发送了密码。

您可以按照Git FAQ中列出的指示清除证书管理器:

$ echo url=https://account@github.com | git credential reject

你应该使用相同的URL,但替换帐户与你自己的用户名(例如,在我的情况下,它将看起来像echo URL =https://bk2204@github.com)。

然后,下次尝试推或拉时,Git将提示您输入用户名和密码。对于用户名,输入您的GitHub用户名,对于密码,在相应的设置页面上生成一个新的个人访问令牌,并将其粘贴到密码字段中。如果您正在从命令行工作,您可能看不到任何表明密码已成功粘贴的迹象;这是正常的,所以之后只需按Enter。

这将在凭据管理器中保存个人访问令牌,以便下次使用(假设您已经设置了一个)。如果你不确定你是否已经设置好了,运行git config credential。助手,看看它是否输出了什么。

如果您没有设置一个,您应该添加一个,这样您就不必记住您的令牌。根据不同的操作系统,执行以下命令:

Git配置——全局凭据。Windows上的助手管理器; Git配置——全局凭据。帮助osxkeychain在macOS; Git配置——全局凭据。Linux上的helper libsecret(如果可用);或 Git配置——全局凭据。如果libsecret不可用,则Linux上的helper存储。

然后你可以再次尝试推或拉,直到不再有提示。

昨天,我试图在我的MacBook的钥匙链上找到GitHub时遇到了一些问题。我试过很多方法都没有成功。

从我的角度来看,我曾经能够从我的GitHub帐户快速拉和推的解决方案是通过SSH完成的。

这允许我不需要进一步配置就可以完成。

你可以通过SSH密钥来实现 然后新建SSH密钥 如果您已经在本地创建了SSH,只需运行pbcopy < ~/. SSH /id_rsa。在终端机上的酒吧 然后拉,推,克隆或任何你需要从你的GitHub存储库,它就完成了

我知道这不是问题的解决方案,但它为我工作,因为我需要做的很快,对我来说,老实说,没有任何理由,我需要使用HTTPS而不是SSH。

它工作!

在获得令牌密钥后,如下所示:

从您的GitHub帐户创建个人访问令牌 进入设置=>开发人员设置=>个人访问令牌=>生成 新令牌(提供您的密码)=>填写表单=>单击生成 复制生成的token(它将类似于 ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta)

在您的终端中使用以下命令:

git clone https://your_username:your_github_token@github.com/username/private-repo.git