删除了对密码身份验证的支持。请改用个人访问令牌

Dae*_*mes 389 git github token git-pull github-api

当我尝试使用时,我的控制台上出现此错误git pull

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

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

sta*_*sta 483

从 2021 年 8 月 13 日起,GitHub 在对 Git 操作进行身份验证时不再接受帐户密码。您需要添加PAT(个人访问令牌),您可以按照以下方法在您的系统上添加 PAT。

在 GitHub 上创建个人访问令牌

从您的 GitHub 帐户,转到Settings => Developer Settings => Personal Access Token => Generate New Token (Give your password) => Fill up the form => 单击Generate token => Copy the generated Token,它将类似于ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta

现在根据您的机器遵循以下方法:

对于 Windows 操作系统

控制面板转到凭据管理器=> Windows 凭据=> 查找=>编辑=> 在密码中替换为你的GitHub 个人访问令牌=> 你完成了git:https://github.com

如果您没有找到git:https://github.com=> 单击添加通用凭据=> 互联网地址将是git:https://github.com,您需要输入您的用户名和密码将是您的GitHub 个人访问令牌=> 单击确定,您就完成了


对于 macOS ?

单击菜单栏右侧的 Spotlight 图标(放大镜)。键入Keychain access然后按 Enter 键启动应用程序 => 在 Keychain Access 中,搜索github.com=> 查找Internet 密码条目github.com=> 相应地编辑或删除该条目 => 大功告成


对于基于 Linux 的操作系统

对于 Linux,您需要使用用户名和电子邮件地址配置本地 GIT 客户端,

$ git config --global user.name "your_github_username"
$ git config --global user.email "your_github_email"
$ git config -l
Run Code Online (Sandbox Code Playgroud)

一旦配置了 GIT,我们就可以开始使用它来访问 GitHub。例子:

$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
> Cloning into `Spoon-Knife`...
$ Username for 'https://github.com' : username
$ Password for 'https://github.com' : give your personal access token here
Run Code Online (Sandbox Code Playgroud)

现在在您的计算机中缓存给定的记录以记住令牌:

$ git config --global credential.helper cache
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以随时通过以下方式删除缓存记录:

$ git config --global --unset credential.helper
$ git config --system --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

现在尝试拉-v以验证

$ git pull -v
Run Code Online (Sandbox Code Playgroud)

Linux/Debian (克隆如下):

git clone https://<tokenhere>@github.com/dadenewyyt/react-projects.git
Run Code Online (Sandbox Code Playgroud)

对于PhpStorm

如果您使用 PhpStorm,请转到菜单Git => pull并选择通过Personal Access Token 进行身份验证。输入您PAT将允许拉/推更改。

  • 嗯,当我克隆我的 repo 时,它没有要求令牌,那么我应该如何进行? (3认同)
  • 命令“git config --global credential.helper store”适用于那些想要永久存储其“令牌”的人。该令牌将存储在您的磁盘中。这种方法是最简单的,但一点也不安全。 (3认同)
  • 不适用于 Ubuntu (3认同)
  • 请务必将令牌保存在某个本地文件或某个 cloud.Upvoted 中。 (2认同)
  • 鉴于 OP 声明他们已经在两周前创建了一个令牌,这并没有解决实际问题。 (2认同)
  • 与@Prhyme 相同的体验。我无法让 git 提示我输入用户名和密码,甚至尝试克隆私有存储库、推送到存储库等。当我去推送到存储库时,它继续给出“已删除对密码身份验证的支持”消息,而不提示任何内容。 (2认同)
  • 它在 Ubuntu 上对我不起作用。我尝试拉出一个分支,但它一直显示相同的错误。 (2认同)
  • 对于mac第一次,当你将代码推送到你的repo时提示你输入密码时,输入访问令牌,它会将令牌添加到钥匙串中,并且不会再次提示。 (2认同)

kar*_*agi 212

如果您使用的是 macOS,只需按照以下步骤操作:

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

就是这样。享受!

如果您使用的是 Windows:

  1. 按照上面的步骤 1 和 2 进行操作。
  2. 在您的 Windows 操作系统中搜索名为Credential Manager的应用程序?然后是Windows 凭据
  3. 使用您在 GitHub 上生成的密码搜索github.com编辑密码token。现在享受吧!

开发人员的黑客(简码):

git remote set-url origin https://<githubtoken>@github.com/<username>/<repositoryname>.git
Run Code Online (Sandbox Code Playgroud)

克隆时:

git clone https://<username>:<githubtoken>@github.com/<username>/<repositoryname>.git
Run Code Online (Sandbox Code Playgroud)

它适用于所有操作系统(Mac、Windows 或 Linux)。

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

  • 对于那些没有此条目的人:应进行此条目。一种方法是克隆项目。然后它会询问您的用户名和密码。而不是密码给它令牌,然后将进行输入。 (42认同)
  • 我没有这样的条目 (Mac) (7认同)
  • 我发现在 Windows 上,有必要*删除*凭据管理器中的现有凭据。然后,下次我尝试执行 `git push` 时,它提示输入个人访问令牌。简单地重置现有凭据是行不通的。 (2认同)
  • 在终端屏幕上使用生成的令牌作为 github 密码。 (2认同)

ßãl*_*ãjî 140

我的帐户 > 设置 > 开发者设置 > 个人访问令牌生成新令牌

git remote set-url origin https://<token>@github.com/<username>/<repo>
Run Code Online (Sandbox Code Playgroud)

  • 这是非常不安全的,它不仅允许本地系统上的任何人对本地存储库具有读取访问权限并控制该存储库,而且“git remote -v”只是公开了密钥,从而使攻击者可以广泛访问您的 GitHub 帐户。 (12认同)
  • 请注意,这似乎需要在每个存储库中运行此命令才能使用新凭据重置该存储库。希望有一个全球解决方案。 (7认同)
  • 这个非常适合我。上面那个投票最多的没有用。 (6认同)
  • @ßãlãjî 操作系统密钥管理器和浏览器不遗余力地保护凭证。正常的 git 工作流程不会向具有存储库读取权限的其他用户公开密码或 ssh 私钥。上述建议确实如此。它允许任何对本地存储库副本(包括共享工作或学校文件系统)具有读取访问权限的人查看用户的明文个人访问令牌。这也扩展到存档副本,例如保留“.git”目录的源 tarball。 (6认同)
  • 谢谢!使用令牌作为密码不起作用,但添加这项工作很棒 (3认同)
  • 迄今为止最好的解决方案。 (3认同)
  • 但是使用令牌,任何拥有此令牌的人都可以推送到您的存储库。在公共计算机中,您将如何保持密码保护? (2认同)

小智 68

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

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


bk2*_*204 51

此消息意味着您正在使用密码而不是个人访问令牌来通过 HTTPS 访问 GitHub,并且不再允许这样做。GitHub 已禁用密码身份验证,因为人们经常会意外泄露他们的密码,虽然可以限制个人访问令牌以限制损害,但密码不能。

如果您没有在提示时明确输入密码,那么您可能有一个凭证管理器,它会保存您的密码并在不提示您的情况下发送密码。

您可以按照Git 常见问题中列出的清除凭证管理器的说明进行操作

$ echo url=https://account@github.com | git credential reject
Run Code Online (Sandbox Code Playgroud)

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

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

假设您已经设置了一个,这将在您的凭证管理器中保存个人访问令牌以备下次使用。如果您不确定是否已设置,请运行git config credential.helper并查看它是否输出任何内容。

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

  • git config --global credential.helper manager 在 Windows 上;
  • git config --global credential.helper osxkeychain 在 macOS 上;
  • git config --global credential.helper libsecret在 Linux 上(如果可用);或者
  • git config --global credential.helper store在 Linux 上如果libsecret不可用。

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

  • 查看 /sf/ask/4814341031/#68776344 在 Mac 上更改密码 (3认同)
  • 我上面提到的技术将清除任何系统上的密码,因此 Git 会再次提示输入密码。这就是我们在常见问题解答中记录它的原因,因为每个操作系统和凭证助手的方向都不同,并且当涉及 GUI 时,很难编写适用于所有系统的单一答案。 (2认同)
  • `echo url=https://account@github.com | git credential reject`正是我所需要的。谢谢! (2认同)

Uma*_*yat 46

对于 Linux,这些简单的步骤可以解决您的问题

  1. 如果您的 Git 密码缓存在credential.helper 中,则取消设置它:

    git config --local --unset credential.helper
    
    Run Code Online (Sandbox Code Playgroud)

    或者,如果您已全局设置凭据,则:

    git config --global --unset credential.helper
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在转到您的 GitHub帐户设置

    在此处输入图片说明

  3. 点击开发者设置

    在此处输入图片说明

  4. 选择个人访问

    在此处输入图片说明

  5. 生成具有给定权限的令牌,例如,

    在此处输入图片说明

  6. 现在git pull在您的 Git 存储库中

  7. 提供用户名和生成的令牌作为密码

在此处输入图片说明

这是一个简单的一步一步的解决方案。

PS:如果你对Git一遍遍的要求用户名/令牌感到恼火,请按照这三个简单的步骤

  • 运行nano ~/.git-credentials。删除 GitHub 行并保存。

  • git config --global credential.helper store

    令牌保存在文件中的物理风险 ~/.git-credentials

  • 运行git pull并只提供一次用户名和密码

它现在不会一次又一次地要求用户名和访问令牌!

  • 这些是“很多”权限。你用这个令牌做什么? (4认同)

小智 31

GitHub 对密码验证进行了更改。如果您尝试通过用户名和密码访问 Git,那么它不允许您。所以使用个人访问令牌而不是密码来访问任何地方的 Git。

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

单击此处 - https://github.com/settings/tokens

第 1 步 - 打开 GitHub 并使用您的凭据登录。

第 2 步 - 单击设置菜单。

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

第 4 步 - 从Developer Settings菜单中单击Personal access token

步骤 5 - 从个人访问令牌中单击生成新令牌按钮。

第 6 步 - 现在填写所需的详细信息,例如Note、Expiration、Select scopes。然后点击下方的Generate Token按钮。

步骤 7 - 在生成新令牌之后。复制生成的令牌并使用此令牌通过用户名和令牌访问 Git。

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

打开控制面板=> 用户帐户=> 管理您的凭据=> Windows 凭据

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

现在您可以访问 Git。

如果您在 Android Studio 中访问 Git,如果要求输入密码,请在任何地方添加 GitHub个人访问令牌而不是您的密码。


Abd*_*shy 27

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

如果您过去克隆了您的仓库并将其设为源,那么您可以更改身份验证,

git remote set-url origin https://<token>@github.com/<username>/<repo>.git
Run Code Online (Sandbox Code Playgroud)

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


Maf*_*Maf 16

您可以强制您的计算机仅使用 SSH 而不是 HTTPS:

git config --global url."git@github.com:".insteadOf "https://github.com/"
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是最简单的解决方案;我想知道这是否有任何警告 (3认同)
  • 我有与OP相同的症状,这个答案为我解决了这个问题,即打开Git配置文件并将HTTPS地址替换为SSH地址。 (2认同)

Muh*_*och 15

对于Ubuntu以下步骤

https://github.com/settings/tokens去生成一个令牌。

git push

username: user_github_username

password: add_generated_token 而不是密码。


die*_*iek 15

对于 Mac,请创建您的令牌。您只能看到一次。复制并安全保存。

打开终端并运行:gh auth login

*gh可以使用Homebrew安装

回答问题。确保在询问时选择 HTTPS。

终端提示


vik*_*mvi 15

如果您使用的是macOS并且在 KeyChain 访问中找不到 github.com 条目:

\n
    \n
  • 尝试执行 Git 操作
  • \n
  • 它会询问用户名
  • \n
  • 输入您的 GitHub 用户名
  • \n
  • 从个人访问令牌生成新密钥
  • \n
  • 在密码字段中,输入新生成的令牌值
  • \n
  • 现在你可以在KeyChain Access \xe2\x86\x92登录中看到github.com的新条目
  • \n
\n


小智 12

转到设置\xe2\x86\x92开发者设置\xe2\x86\x92 如果不存在,则会生成新令牌。

\n

或者复制令牌(如果存在)。

\n

在此输入图像描述

\n

然后设置令牌:

\n
git remote set-url origin https://<token>@github.com/<username>/<repo>.git/\n
Run Code Online (Sandbox Code Playgroud)\n


Pas*_*heu 11

首先在 GitHub 上创建 token:

  1. 单击个人资料图片,然后在菜单中选择“设置”
  2. 在底部左侧菜单中选择开发者设置
  3. 在左侧菜单中选择个人访问令牌(第三个选项)
  4. 选择生成新令牌并按照后续步骤操作。

如果您尚未安装 GitHub CLI,则不会在钥匙串访问中找到它。因此您应该先安装它。

  1. 安装适用于 macOS 的 GitHub CLI

    brew install gh
    
    Run Code Online (Sandbox Code Playgroud)

    对于 Windows:

    winget install gh
    scoop install gh
    choco install gh
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在命令行中输入gh auth login,按照提示操作,并提供以下答案

    ?您想登录什么帐户? GitHub.com

    ?您首选的 Git 操作协议是什么? HTTPS

    ?使用您的 GitHub 凭据对 Git 进行身份验证? 是的

    ?您希望如何验证 GitHub CLI?粘贴身份验证令牌

  3. 粘贴您在 GitHub 上创建的令牌并按Enter


小智 9

生成 GitHub 个人访问令牌 (PAT)

  1. 登录到您的 GitHub 帐户并打开Settings ? 开发人员设置 个人访问令牌。
  2. 单击Generate New Token

不要忘记复制和一代又一代的令牌。它只能访问一次。

视窗

  1. 打开控制面板用户帐户? 凭证管理器
  2. 现在,寻找git:https://github.com.
  3. 点击编辑
  4. 将密码替换为 GitHub 个人访问令牌。

苹果电脑

  1. 单击 Spotlight 图标并搜索Keychain Access
  2. 在 Keychain Access 中,搜索github.com
  3. 现在,查找 github.com 的互联网密码条目。
  4. 更新条目。


Mil*_*hen 9

一个命令简单的解决方案

如果你的电脑没有在 GitHub 账号中添加 SSH 密钥,我会在答案的最后添加信息给你做。你应该先做

推送失败后,再做这个
$ git remote set-url origin git@github.com:{user_id}/{project_name}.git
并再次推送。然后就是工作了。

让我在下面展示我的案例。
(我将指导您如何处理您的案例)

首先,当我添加,提交和推送时,我遇到了这个问题。
在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

就我而言,

  1. {project_name} <-> open-idea-pool

  2. {user_id} <-> milochen0418 是

  3. {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

这是工作。

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

你可以参考这两个链接来做。此处的信息支持 Mac、Windows 和 Linux。
(1)向 GitHub 添加 SSH 密钥的问题
(2) https://docs.github.com/en/enterprise/2.15/user/articles/adding-a-new-ssh-key-to-your-github-account

  • 我敢打赌这之所以有效只是因为你在 github 帐户中添加了 SSH 密钥。 (3认同)

VK3*_*321 9

git pull之前是在Linux上使用密码的。

如果是这种情况,您唯一需要做的就是使用token代替password

转至个人访问令牌生成访问令牌。

这是一个例子git pull

git pull

Username for 'https://github.com': gitusername
Password for 'https://yourusername@github.com': //Then enter generated token
Run Code Online (Sandbox Code Playgroud)


Agg*_*sor 8

对于那些将Sourcetree现有存储库一起使用的用户,您必须像这样更新存储库 URL https://<your_token>@github.com/username/repo.git

这是摘自这个答案


Álv*_*ero 7

如果您想第一次克隆:

git clone https://<repository_owner>:<personal_access_token>@github.com/<repository_owner>/<repo>.git
Run Code Online (Sandbox Code Playgroud)


vag*_*i k 6

有效!

获取令牌密钥后,如下所述

从您的 GitHub 帐户在 GitHub 上创建个人访问令牌

转到设置=>开发人员设置=>个人访问令牌=>生成新令牌(提供您的密码)=>填写表单=>单击生成令牌=>复制生成的令牌(类似于 ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta

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

git clone https://your_username:your_github_token@github.com/username/private-repo.git
Run Code Online (Sandbox Code Playgroud)


Shr*_*gde 5

在Linux中,你可以在GitHub中生成一个新的访问令牌,直接替换~.git-credentials文件中的密码

密码部分:@


小智 5

Mac 用户——简单的解决方案。

在 GitHub 中设置个人访问令牌

设置 -> 开发者设置 -> 个人访问令牌

打开钥匙串 -> 输入“Github”

将密码更改为个人访问令牌

尝试提交/推送。

选择“始终允许”,一切照旧。


归档时间:

查看次数:

183390 次

最近记录:

4 年,3 月 前