当我尝试使用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在密码认证方面做了一些改变。如果您试图通过用户名和密码访问Git,那么它将不允许您访问。因此,使用个人访问令牌而不是密码来在任何地方访问Git。

下面是生成个人访问令牌的步骤。

点击这里获取令牌- https://github.com/settings/tokens

步骤1 -打开GitHub和登录与您的凭证。

步骤2 -单击“设置”菜单。

步骤3 -从设置菜单单击开发人员设置

步骤4 -从开发人员设置菜单,单击个人访问令牌

步骤5 -从个人访问令牌中,单击Generate new令牌按钮。

第6步-现在填写所需的详细信息,如注意,到期,选择范围。然后单击Generate Token按钮。

步骤7 -在此之后,生成了一个新的令牌。复制生成的令牌,并使用该令牌使用用户名和令牌访问Git。

如果您使用的是Windows操作系统,请按照以下步骤操作。

打开控制面板→用户帐户→管理您的凭证→Windows凭证。

它将显示所有通用凭证。找到你的GitHub URL并点击它。现在点击编辑按钮。然后将从GitHub生成的个人访问令牌添加到密码字段中。然后点击保存按钮。

现在您可以访问Git了。

如果你在Android Studio中访问Git,如果被要求输入密码,那么在任何地方添加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存储。

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

一个命令简单的解决方案来解决它

如果你的计算机没有SSH密钥添加到GitHub帐户,我会在回答的最后添加信息让你这样做。你应该先做。

推送失败后,执行以下操作:

git remote set-url origin git@github.com:{user_id}/{project_name}.git

再推一下。这样就有用了。

让我在下面展示我的案例。 (我会指导你如何做你的案子。)

首先,当我添加、提交和推送时,我遇到了这个问题:

然后,我当前的Git日志如下。

最后,这是我解决问题的方法。

就我而言,

{project_name} <-> open-idea-pool . {project_name} <-> open-idea-pool . {user_id} <-> milochen0418是 {branch_name} <-> master . {branch_name

(你的branch_name可能是main,但不是master)

当我推失败时,我唯一需要的是这一个命令:

git remote set-url origin git@github.com:{user_id}/{project_name}.git

然后我再按一下:

git push -u origin {branch_name}

以我的案例为例,

git remote set-url origin git@github.com:milochen0418/open-idea-pool.git
git push -u origin master

它的工作原理。

-- 顺便说一下,这是创建一个SSH密钥到GitHub帐户的过程。

您可以参考这两个链接来进行操作。这里的信息支持Mac、Windows和Linux。

关于添加SSH密钥到GitHub的问题 添加一个新的SSH密钥到您的GitHub帐户

此外,如果你想克隆一个新项目,你可以执行以下命令:

git clone git@github.com:{user_id}/{project_name}.git

我是一个Sourcetree用户,并通过“刷新OAuth令牌”在菜单工具→选项→身份验证→选择GitHub帐户来修复它。

如果你从未为你的GitHub帐户添加身份验证,你可以参考如何连接GitHub与SourceTree(方法1:通过OAuth连接远程帐户)。

最近GitHub更新了他们的远程:支持密码认证。它于2021年8月13日被删除,以使用PAT(个人访问令牌)来访问GitHub API。

你可以在这里的博客文章中阅读。

现在启用PAT

登录你的GitHub账户。 按照这篇文章进行下一步操作。

现在要在命令行上使用令牌,执行以下操作:

git clone https://github.com/username/repo.git

Username: your_username
Password: your_token

请注意,您的令牌有一个过期时间,必须私下保存,并在需要在命令行上进行身份验证时使用。

小心

如果你克隆到一个存储库,该存储库属于:

组织。

确保你是那个组织的成员

或者是一些个人存储库,

请确保已启用以下功能

组织/个人需要启用远程克隆和分叉,如下所示:

进入组织设置:

启用成员特权:

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

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

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

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