当我尝试使用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存储。
然后你可以再次尝试推或拉,直到不再有提示。
如果你使用的是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)上工作。
缺点:您必须记住或应该需要对本地的每个存储库进行操作。所以我希望每个人都使用上面提到的步骤。
注意:
对于那些没有这个条目的人:它可以。一种方法是——克隆一个项目。然后它会询问你的用户名和密码。而不是密码给它的令牌,然后进入将作出。
从2021-08-13开始,GitHub在验证Git操作时不再接受帐户密码。您需要添加一个PAT(个人访问令牌),您可以按照下面的方法在您的系统上添加一个PAT。
在GitHub上创建个人访问令牌
从你的GitHub账户,点击设置→开发者设置→个人访问令牌→生成新的令牌(给出你的密码)→填写表格→点击生成令牌→复制生成的令牌,它将是ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta
现在根据您的机器执行以下方法:
Windows操作系统⤴
从控制面板转到凭据管理器→Windows凭据→找到git:https://github.com→编辑→打开密码替换为您的GitHub个人访问令牌→完成
如果你没有找到git:https://github.com→点击添加一个通用凭证→互联网地址将是git:https://github.com,你需要输入你的用户名和密码将是你的GitHub个人访问令牌→点击确定,你就完成了
macOS版本⤴
点击菜单栏右侧的Spotlight图标(放大镜)。输入钥匙链访问,然后按Enter键启动应用程序→在钥匙链访问,搜索github.com→找到github.com的互联网密码条目→编辑或删除相应的条目→你就完成了
linux操作系统⤴
对于Linux,需要使用用户名配置本地GIT客户端
电子邮件地址,
$ git配置——全局用户名“your_github_username”
$ git配置——全局用户。电子邮件“your_github_email”
$ git config -l
一旦配置了GIT,我们就可以开始使用它来访问GitHub。
例子:
$ git克隆https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
克隆到' YOUR-REPOSITORY '…
用户名:<输入您的用户名>
密码:<输入您的密码或个人访问令牌(GitHub)
现在在你的计算机中缓存给定的记录来记住令牌:
$ git配置——全局凭证。辅助缓存
如果需要,你可以随时删除缓存记录:
$ git config——global——unset credentials .helper
$ git config——system——unset credential.helper
现在试着用-v来验证
$ git拉-v
Linux / Debian
(克隆如下):
Git克隆https://<tokenhere>@github.com/<user>/<repo>.git
对于PhpStorm
如果您正在使用PhpStorm,请进入菜单Git→拉并选择通过个人访问令牌进行身份验证。输入您的PAT,它将允许您拉/推更改。
Android Studio Arctic Fox解决方案(Windows 10)
我在Android Studio Arctic Fox(最新版本)中使用个人访问令牌进行了身份验证,但我仍然在2021年8月14日得到了这个错误:
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
我在github.com上生成了一个新的访问令牌,从Android Studio中删除了我的GitHub帐户,并再次使用新的访问令牌添加帐户。但是,它仍然显示出同样的错误。
我在Stack Overflow上阅读了其他解决方案,下载了GitHub CLI,并在Windows命令提示符中成功添加了我的GitHub帐户和访问令牌,并尝试从Android Studio再次推送存储库,同样失败。
然后,在本文之后,我在命令行中执行了以下操作:
cd <project-directory>
git remote set-url origin https://<TOKEN>@github.com/<user_name>/<repo_name>.git
我从Android Studio再次推送,它终于工作了!
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个人访问令牌,而不是你的密码。
一个命令简单的解决方案来解决它
如果你的计算机没有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
我不知道什么真的有用,但我知道它现在对我有用。以下是我所做的一切:
生成PAT并用作密码-它不起作用。
在Windows凭据管理器中清除github.com条目-不工作。
将PAT添加到存储库URL,如下所示
https:// < personal-access-token > @github.com/ < my-repo-url >
它起作用了,但我不喜欢这个解决方案。
重新启动电脑。从https://git-scm.com安装了最新的Git -在Sourcetree -菜单工具→选项→Git→Git版本-选择“系统”。
从存储库URL中删除了PAT -它仍然有效。
在我看来,安装新的“Git”真的很有帮助,所以第三步可能是不必要的,但我不能确定。我不知道如果不临时向URL添加PAT,它是否会工作。也许它还在某个地方保存了一些东西。
使用SSH(忘记https)(例如,不要使用https url进行克隆)
使用个人访问令牌(PAT)(忘记用户名/密码)
(例如,设置>开发人员设置>个人访问令牌)
更新git到最新版本(例如2.35.1)//我认为这很重要
在Github中,取消勾选设置>开发人员设置>保持我的电子邮件地址私密性
结论:您在Github中添加了个人访问令牌。然后从任何IDE(例如,Android Studio, IntelliJ IDEA等),您可以使用ssh添加远程(例如,名称:origin, URL: git@github.com:your_github_username/your_git_repo.git)。就是这样
如果还没有,
配置git全局用户名和邮箱
Git配置——global user.name "your_username" && Git配置——全局用户。电子邮件“your_email”
如果在windows,您可以为您的用户添加windows凭据,控制面板>用户>管理您的凭据> windows凭据>添加通用凭据>
互联网地址将是git:https://github.com,你需要输入
在你的用户名和密码将是你的GitHub个人访问
Token =>单击Ok,就完成了
在这之后,我能够使用git(获取/推/拉等)
对于macOS用户,只需简单地遵循以下步骤:
(我从Kartik Tyagi那里截取了这部分,但我补充了一个被遗漏的关键部分。)
转到此链接:https://github.com/settings/tokens(配置文件->设置->开发人员设置->个人访问令牌)。(不要去仓库设置;这是你的个人资料设置)
生成一个新的令牌并将其复制粘贴到某个安全的地方。
现在在你的Mac电脑上搜索一个名为Keychain Access的应用程序。
搜索github.com。
如果不存在:
5.1. 点击“创建一个新的钥匙链项目”按钮(记事本笔图标)。
Keychain项目名称:https://github.com
帐户名:https://github.com(必须这样保存。不要添加www。它将无法正常工作)
密码:粘贴您生成的令牌
如果存在:
5.2. 如果有多个GitHub登录,然后选择Kind: Internet password,双击它。
点击显示密码,然后输入你的Mac密码并按enter键。
密码现在应该可见了。现在,只需粘贴在第2步中生成的令牌,然后单击Save changes。
应该就是这样了。享受吧!