当我尝试使用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日周二到期。为什么今天这个被删除了?


当前回答

这条消息意味着您正在使用密码而不是个人访问令牌通过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存储。

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

其他回答

这条消息意味着您正在使用密码而不是个人访问令牌通过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存储。

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

为您的帐户创建个人访问令牌(PAT)。参见这里创建PAT。PAT应该从ghp_开始 打开你的钥匙链访问应用程序,搜索GitHub,并删除你现有保存的密码 回到您的终端并尝试执行提交。它会提示您输入用户名和密码。现在,尝试输入您的PAT代替您通常的GitHub密码/密码短语。

我花了几个小时在这个问题上,使用WSL 2 (Ubuntu 20.04 (Focal Fossa))。打开一个新的外壳对我很有用。尝试旧的外壳,它没有工作。

我也在调查GitLab,因为他们可能没有微软的文化,强迫你按照他们的方式做事(“你会喜欢这样”),或者一直发布破坏性的更改。

如果你使用的是macOS,只需简单地遵循以下步骤:

转到此链接:https://github.com/settings/tokens(配置文件->设置->开发人员设置->个人访问令牌)。(不要去仓库设置;这是你的个人资料设置) 生成一个新的令牌并将其复制粘贴到某个安全的地方。 现在在你的Mac电脑上搜索一个名为Keychain Access的应用程序。 搜索github.com(如果有多个GitHub登录,然后选择Kind: Internet password),双击它。 点击显示密码,然后输入你的Mac密码并按enter键。 密码现在应该可见了。现在,只需粘贴在第2步中生成的令牌,然后单击Save changes。

就是这样。享受吧!

如果你使用的是Windows:

按照上面的步骤1和2执行。 在Windows操作系统中搜索一个名为Credential Manager→Windows Credentials的应用程序。 搜索github.com,用你在GitHub上生成的令牌编辑密码。 现在享受!

开发者破解(短代码):

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

而克隆:

git clone https://<username>:<githubtoken>@github.com/<username>/<repositoryname>.git

它可以在任何操作系统(Mac, Windows或Linux)上工作。

缺点:您必须记住或应该需要对本地的每个存储库进行操作。所以我希望每个人都使用上面提到的步骤。

注意:

对于那些没有这个条目的人:它可以。一种方法是——克隆一个项目。然后它会询问你的用户名和密码。而不是密码给它的令牌,然后进入将作出。

最简单的解决方案(2022年5月):

在“个人访问令牌”中创建一个新令牌 复制令牌(Windows: Ctrl + C, macOS: Cmd + C,或单击复制图标) 尝试推送本地存储库:git push 输入您的GitHub用户名 将令牌粘贴为密码