使用令牌将代码推送到GitHub - “已删除密码身份验证的支持”。

51

git push时出现错误信息:

自2021年8月13日起,已停用密码身份验证。请改用个人访问令牌。 远程: 详见https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/获取更多信息。 fatal: 无法访问 'https://github.com/codingTheWorld777/react-mini-projects.git/':请求的 URL 返回错误: 403"***

我无法使用令牌访问GitHub,那么如何将代码推送到GitHub上呢?


当我使用 git push 时。我在描述中添加了一张图片。 - user16226729
是的,我已经阅读了链接,但我不确定那是否适用于我的情况。我已经创建了一个令牌,在文档中,我没有看到任何关于如何使用令牌进行Git凭据的说明 :< - user16226729
好的,请点击上面的链接,基本上,您创建的令牌(链接中的说明)将替换您通常输入的密码值(参考)。如果您在本地开发,没有理由不使用公钥SSH,您只需要添加一次,然后您就不需要为任何存储库上的任何git操作使用用户名或密码。 - Lawrence Cherone
明白了,我只需要在钥匙串中删除我的Github密码,以便重新登录Github凭据 :) 。无论如何,非常感谢! - user16226729
这是一个针对Mac的快速教程,链接为https://youtu.be/iKf8-hhdWjs。 - VedantK
显示剩余2条评论
8个回答

52
GitHub宣布他们打算要求所有经过身份验证的Git操作都使用基于令牌的身份验证。在GitHub.com上,当进行Git操作时,他们将不再接受账户密码:
生成令牌: - 前往您的GitHub帐户token settings - 生成一个令牌
在Mac上: - 前往钥匙串访问 - 按下“登录”选项卡和所有项目 - 单击GitHub密钥 - 将密码更改为最近生成的令牌

Enter image description here

在Windows上:

  • 打开控制面板用户账户凭据管理器

  • 编辑GitHub的通用凭据

  • 将令牌粘贴到密码栏中

Enter image description here


展示一下,使用这个提示在Mac上运行。 - Flávio
1
Github在他们的文档和/或错误信息中没有识别出Mac用户的这个关键步骤,这可能会浪费数百或数千个开发人员的工作时间。 - Pigpocket
2
这不是MacOS用户的好解决方案。它会替换您在Safari中的登录凭据,并且根据令牌权限可能会破坏后续第三方OAuth链接到您的GitHub帐户。 - Joshua Kolden
@Thomas,我尝试了您建议的“brew install gh”和“gh auth login”,但最终它将github.com密码的“Internet Password”更改为令牌。您能否提供更详细的说明或在主问题中发布您的答案,因为此问题已被标记为重复,然后在此处提供链接。 - Ahmed Imam
1
@Thomas 我不能因为它已经关闭了。 - Joshua Kolden
显示剩余5条评论

24

您需要使用以下内容更改远程URL:

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

您可以在这里找到token


5
什么是“stream”?你能简单介绍一下吗? - Habib
@Habib Stream是一个分支模型。如果你想要将代码推送到主分支,master将成为你的主要流。 - barii
1
我尝试通过添加“origin”或我的起源名称来设置它的URL,以使用相同的命令。 - Habib

21

今天我也遇到了这个问题,在macOS上。

我通过以下方法解决了这个问题:

首先,获取一个令牌!按照GitHub的指导进行操作。我认为你只需点击警告中提供的链接即可。

其次,在macOS上更改钥匙串:

  1. 在macOS上搜索“钥匙串”。
  2. 搜索“GitHub”。
  3. 更改具有“Internet密码”的钥匙串中的密码,使用您的新令牌

然后,我的问题得到了解决,现在我可以进行“git push”了。


1
谢谢,这很有帮助。我们需要注意的另一件事是,在令牌过期时生成一个新的令牌或者生成一个永不过期的令牌。 - Samrat
非常感谢!这与此答案基本相同:https://dev59.com/IsHqa4cB1Zd3GeqP6sKb#68776344 - Falaen
使用您的新令牌更改“Internet Password”中的密码对我很有帮助。 - Ahmad Shahwaiz
我认为你可以去github.com输入你的凭据并将信息保存在钥匙串中,然后检查。 - Ahmad Shahwaiz
@yanjieZe和@AhmadShahwaiz:你们的Mac OSX解决方案是错误的。你不需要更改“Internet Password”,那只是用于浏览器使用(与OP无关)。你必须添加一个条目,其中name=git:https://github.comKind=Programme password,Account=你的github用户名,where=git:https://github.com。然而,最干净的方法是brew install gh,然后运行gh auth login。这将在您的钥匙串中添加正确的条目(参见@niyaz的解决方案)。 - Thomas

16

步骤 1:进入您的 GitHub 账户 → 设置开发者设置个人访问令牌 → 生成/重新生成您的令牌。

步骤 2:前往 https://cli.github.com 并下载 GitHub CLI。

步骤 3:打开命令行或终端 → gh auth login,并输入登录凭据。完成。


1
只有这个方法对我有效。在钥匙串中没有“Internet Password”条目,因此我运行了brew install gh,然后执行了上面的命令并选择了适当的选项(PAT需要repo + workflow + admin:read:org权限),然后粘贴了PAT,完成了操作。现在我可以从bash中调用git pullgit push等命令。 - Thomas
@Niyaz,到目前为止,你的答案是关于Mac OSX尤其是关于OP的唯一正确的答案。 - Thomas
1
@Thomas,我刚试了一下Windows 10,按照上述步骤似乎可以正常工作,在Windows中,步骤1:https://cli.github.com/ - 下载Windows CLI;步骤2:在Windows终端中输入“gh auth login”,成功登录后,就可以推送提交了。 - Niyaz
太棒了!我只能说你的解决方案在Mac OSX下有效。但是,考虑到你现在已经在Windows上进行了检查(我假设安装了Bash for Windows),那么你的解决方案在我看来是最干净和最好的。 - Thomas
我该如何使此gh与我的本地git安装互动? - Lokomotywa

10

我有同样的问题。对我来说,解决方法是在https://cli.github.com/中安装GitHub CLI。在我的操作系统中安装后,在终端中运行gh auth login,并通过在GitHub个人资料中生成的访问令牌,在浏览器中登录。请按照以下步骤:

我的账户→设置→开发人员设置→ 个人访问令牌[ 生成新令牌]


1
谢谢:)只有这个对我起作用。在Mac OSX钥匙串中生成了PAT--->没有"Internet Password"条目!!!所以我运行了brew install gh,然后执行了上面的命令并选择了适当的选项(PAT需要repo+workflow+admin:read:org权限),然后粘贴了PAT,完成了。现在我可以从bash中调用git pullgit push等命令了。 - Thomas
1
只有这个解决方案在 Mac 上有效 (Y) - Khateeb321

5

首先,您需要在创建个人访问令牌中创建一个个人访问令牌。

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

Username: your_username

Password: your_token

大多数人已经知道这一点,你的答案没有解决OP中的主要问题。问题是永久设置凭据,以便可以从bash终端调用git pullgit push - Thomas

1

Mac 的解决方案:

首先从 GitHub 生成一个 token。然后在 GitHub 部分的钥匙串访问中使用该 token 替换您的密码。


你的Mac OSX解决方案是完全错误的。你不需要更改“Internet Password”,那只是用于浏览器使用。你必须添加一个条目,其中包含name=git:https://github.comKind=Programme password、Account=你的GitHub用户名、where=git:https://github.com。但最干净的方法是brew install gh,然后运行gh auth login。这将在你的钥匙串中添加正确的条目(参见@niyaz的解决方案)。 - Thomas

-1

您需要创建个人访问令牌。您可以在创建个人访问令牌中找到创建个人访问令牌的说明。

确保您保持访问令牌安全和保密。之后,您需要使用访问令牌替换设备(笔记本电脑/台式电脑)中当前保存的密码。在 macOS 中,您可以搜索 Keychain 并找到带有 Internet 密码的 GitHub,并将其替换为您的访问令牌。有关说明,请参见从 macOS Keychain 更新凭据

在 Windows 中,可能是凭据管理器(我不确定)。请查看:如何在 Windows 上更新 Git 凭据


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接