当我尝试使用 git pull
时,我在控制台上收到此错误:
remote:对密码身份验证的支持已于 2021 年 8 月 13 日移除。请改用个人访问令牌。远程:请参阅 https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ 了解更多信息。致命:无法访问“...”:请求的 URL 返回错误:403
这很奇怪,因为我只是在两周前按照文档在 GitHub 上创建了一个令牌。该令牌将于 2021 年 10 月 26 日星期二到期。为什么今天已将其删除?
从 2021 年 8 月 13 日起,GitHub 在对 Git 操作进行身份验证时不再接受帐户密码。您需要添加 PAT(个人访问令牌),您可以按照以下方法在您的系统上添加 PAT。
在 GitHub 上创建个人访问令牌 从您的 GitHub 帐户,转到设置 => 开发人员设置 => 个人访问令牌 => 生成新令牌(提供您的密码)=> 填写表格 => 单击生成令牌 => 复制生成的令牌,它将类似于 ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta
现在根据您的机器遵循以下方法:
对于 Windows 操作系统 ⤴ 从控制面板转到凭据管理器 => Windows 凭据 => 找到 git:https://github.com => 编辑 => 将密码替换为您的 GitHub 个人访问令牌 => 如果您不这样做,您就完成了't find git:https://github.com => 点击 Add a generic credential => Internet 地址将是 git:https://github.com 并且您需要输入您的用户名和密码将是您的 GitHub Personal访问令牌 => 单击确定,您就完成了
对于 macOS ⤴ 单击菜单栏右侧的 Spotlight 图标(放大镜)。键入 Keychain access 然后按 Enter 键启动应用程序 => 在 Keychain Access 中,搜索 github.com => 找到 github.com 的 Internet 密码条目 => 相应地编辑或删除该条目 => 完成
对于基于 Linux 的操作系统 ⤴ 对于 Linux,您需要使用用户名和电子邮件地址配置本地 GIT 客户端 $ git config --global user.name "your_github_username" $ git config --global user.email "your_github_email" $ git config -l 配置好 GIT 后,我们就可以开始使用它来访问 GitHub。示例:$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY > 克隆到 `YOUR-REPOSITORY`... 用户名:<输入您的用户名> 密码:<输入您的密码或个人访问令牌(GitHub ) 现在在您的计算机中缓存给定记录以记住令牌: $ git config --global credential.helper cache 如果需要,您可以随时通过以下方式删除缓存记录: $ git config --global --unset credential.helper $ git config --system --unset credential.helper 现在尝试使用 -v 拉取以验证 $ git pull -v
Linux/Debian(克隆如下): git clone https://
对于 PhpStorm 如果您使用的是 PhpStorm,请转到菜单 Git => pull 并选择通过个人访问令牌进行身份验证。输入您的 PAT,它将允许您拉/推更改。
如果您使用的是 macOS,只需按照以下步骤操作:
转到此链接:https://github.com/settings/tokens(个人资料 -> 设置 -> 开发人员设置 -> 个人访问令牌)。 (不要转到存储库设置;这是您的个人资料设置)生成一个新令牌并将其复制粘贴到安全的地方。现在在您的 Mac 中搜索一个名为 Keychain Access 的应用程序。搜索 github.com(如果有多个 GitHub 登录然后选择 Kind: Internet password),双击它。单击显示密码,然后输入您的 Mac 密码并按 Enter。密码现在应该是可见的。现在,只需粘贴您在第 2 步中生成的令牌,然后单击保存更改。
就是这样。享受!
如果您使用的是 Windows:
按照上述步骤 1 和 2 进行操作。在您的 Windows 操作系统中搜索名为 Credential Manager → 然后 Windows Credentials 的应用程序。搜索 github.com 并使用您在 GitHub 上生成的令牌编辑密码。现在享受吧!
开发人员的 hack(简码):
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)。
缺点:您必须记住或应该需要对本地的每个存储库进行操作。所以我希望每个人都使用上述步骤。
笔记:
对于那些没有此条目的人:可以制作。一种方法是克隆一个项目。然后它会询问您的用户名和密码。而不是密码给它令牌,然后输入。
git push
时,它会提示输入个人访问令牌。简单地重置现有凭证是行不通的。
使用我的帐户→设置→开发人员设置→个人访问令牌→生成新令牌。
git remote set-url origin https://<token>@github.com/<username>/<repo>
git remote -v
只是公开了让攻击者帐户广泛访问您的 GitHub 帐户的密钥。
.git
目录的源 tarball。
对于 Linux,这些简单的步骤可以解决您的问题
如果您的 Git 密码缓存在 credential.helper 中,则取消设置: git config --local --unset credential.helper 或者,如果您已全局设置凭据,则: git config --global --unset credential.helper 现在转到您的 GitHub 帐户设置 单击开发人员设置 选择个人访问 生成具有给定权限的令牌,例如,现在 git pull 在您的 Git 存储库中 提供用户名和生成的令牌作为密码
https://i.stack.imgur.com/j1ETC.png
这是一个简单的逐步解决方案。
PS:如果你对 Git 一遍又一遍地询问用户名/令牌感到恼火,请按照以下三个简单步骤操作
运行 nano ~/.git-credentials。删除 GitHub 行并保存。
git config --global credential.helper store 有风险,因为令牌物理上保存在文件 ~/.git-credentials
运行 git pull 并只提供一次用户名和密码
它现在不会一次又一次地询问用户名和访问令牌!
GitHub 对密码验证进行了更改。如果您尝试通过用户名和密码访问 git,那么它不允许您访问。所以使用个人访问令牌而不是密码来访问 git 无处不在。
以下是生成个人访问令牌的步骤。
单击此处获取令牌 - https://github.com/settings/tokens
第 1 步 - 打开 GitHub 并使用您的凭据登录。
第 2 步 - 单击设置菜单。
第 3 步 - 从设置菜单中单击开发人员设置
第 4 步 - 从开发人员设置菜单中单击个人访问令牌
第 5 步 - 从个人访问令牌中单击生成新令牌按钮。
第 6 步 - 现在填写所需的详细信息,如注释、到期、选择范围。然后单击生成令牌按钮。
第 7 步 - 生成新令牌之后。复制生成的令牌并使用此令牌通过用户名和令牌访问 Git。
如果您使用的是 Windows 操作系统,请按照以下步骤操作。
打开控制面板 => 用户帐户 => 管理您的凭据 => Windows 凭据。
它将显示所有通用凭据。找到您的 GitHub URL 并单击它。现在单击编辑按钮。然后将 GitHub 生成的个人访问令牌添加到密码字段中。然后点击保存按钮。
现在您可以访问 git。
如果您在 Android Studio 中访问 Git,如果系统要求您输入密码,请在任何地方添加 GitHub 个人访问令牌,而不是您的密码。
此消息意味着您正在使用密码而不是个人访问令牌通过 HTTPS 访问 GitHub,并且不再允许这样做。 GitHub 已禁用密码身份验证,因为人们意外泄露密码是很常见的,虽然可以限制个人访问令牌以限制损坏,但密码不能。
如果您没有在提示时明确输入密码,那么很可能您有一个凭证管理器,它正在保存您的密码并在不提示您的情况下发送它。
您可以按照说明清除您的凭据管理器 listed in the Git FAQ:
$ echo url=https://account@github.com | git credential reject
您应该使用相同的 URL,但将 account
替换为您自己的用户名(例如,在我的例子中,它看起来像 echo url=https://bk2204@github.com
)。
然后,下次您尝试推送或拉取时,Git 会提示您输入用户名和密码。对于用户名,输入您的 GitHub 用户名,对于密码,生成一个新的个人访问令牌 on the appropriate settings page 并将其粘贴到密码字段中。如果您从命令行工作,您可能看不到任何密码已成功粘贴的迹象;这是正常的,所以之后只需按 Enter 即可。
假设您设置了一个,这会将个人访问令牌保存在您的凭证管理器中以备下次使用。如果您不确定是否设置了一个,请运行 git config credential.helper
并查看它是否输出任何内容。
如果您没有设置一个,您应该添加一个,这样您就不必记住您的令牌。根据操作系统运行以下命令之一:
Windows 上的 git config --global credential.helper 管理器;
git config --global credential.helper macOS 上的 osxkeychain;
Linux 上的 git config --global credential.helper libsecret(如果可用);或者
如果 libsecret 不可用,则在 Linux 上存储 git config --global credential.helper 。
然后,您可以再次尝试推或拉,直到不再提示您。
git config --global credential.helper osxkeychain
和 git config --global credential.helper
,但我的控制台中没有发生任何事情,所以我将尝试第一个解决方案。只有一个问题,url=https://account@github.com
是什么?我的 repot 或我的 github 的链接?
echo url=https://account@github.com | git credential reject
正是我所需要的。谢谢!
从设置→开发人员设置在 GitHub 中生成访问令牌。
如果您过去克隆了您的存储库并将其作为原始存储库,那么您可以更改身份验证,
git remote set-url origin https://<token>@github.com/<username>/<repo>.git
如果您要在 2021 年 8 月 13 日之后克隆存储库,则可以使用正常的克隆命令并在密码字段中设置生成的访问令牌。
find . -type f -path '*/.git/*' -name 'config' -exec sed -i 's%https://github.com/%git@github.com:%g' {} \;
它将递归地在 .git
文件夹中搜索任何名为 config 的文件,并找到并用 git@github 替换 https URL。我建议只在你知道你有普通香草遥控器的简单仓库上这样做。我还没有测试过它将如何在不同的设置上工作。 YMMV!
最简单的解决方案(2022 年 5 月):
在个人访问令牌中创建一个新令牌 复制令牌(Windows:Ctrl + C,macOS:Cmd + C,或单击复制图标)尝试推送您的本地存储库:git push 输入您的 GitHub 用户名 将令牌粘贴为您的密码
对于 Ubuntu,请使用以下步骤
在 https://github.com/settings/tokens,去生成一个令牌。
git 推送
用户名:user_github_username
密码:add_generated_token 而不是密码。
一个命令简单的解决方案来解决它
如果您的计算机没有将 SSH 密钥添加到 GitHub 帐户,我会在答案末尾添加信息供您执行。你应该先做。
推送失败后,执行以下操作:
git remote set-url origin git@github.com:{user_id}/{project_name}.git
并再次推动。然后它工作。
让我在下面展示我的案例。 (我会指导你如何处理你的案子。)
首先,当我添加、提交和推送时,我遇到了这个问题:
https://i.stack.imgur.com/EHPEQ.png
然后,我当前的 Git 日志如下。
https://i.stack.imgur.com/pDhB2.png
最后,这是我解决问题的方法。
https://i.stack.imgur.com/Iytx1.png
就我而言,
{project_name} <-> open-idea-pool {user_id} <-> milochen0418 是 {branch_name} <-> master
(您的 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。
将 SSH 密钥添加到 GitHub 的问题 将新的 SSH 密钥添加到您的 GitHub 帐户
此外,如果要克隆一个新项目,可以执行以下命令:
git clone git@github.com:{user_id}/{project_name}.git
ssh
而不是使用 username/password(token)
方法。好答案。而不是 https://github.com/<repo_url>
使用 git@github.com:<repo_url>
如果您使用 macOS 并且在 KeyChain 访问中找不到 github.com 条目:
尝试执行 Git 操作
它会询问用户名
输入您的 GitHub 用户名
从个人访问令牌生成新密钥
在密码字段中,输入这个新生成的令牌值
现在您可以在 KeyChain Access 中看到 github.com 的新条目 → 登录
对于 Mac,去创建你的令牌。你只能看到一次。复制并安全保存。
打开终端并运行:gh auth login
*gh 可以使用 Homebrew 安装
回答问题。确保在询问时选择 HTTPS。
https://i.stack.imgur.com/GpdA0.png
生成 GitHub 个人访问令牌 (PAT)
登录到您的 GitHub 帐户并打开设置 → 开发人员设置个人访问令牌。单击生成新令牌。
不要忘记复制和生成后的令牌。它只能访问一次。
视窗
打开控制面板→用户帐户→凭据管理器。现在,寻找 git:https://github.com。单击编辑。将密码替换为 GitHub 个人访问令牌。
苹果电脑
单击 Spotlight 图标并搜索钥匙串访问。在 Keychain Access 中,搜索 github.com。现在,查找 github.com 的 Internet 密码条目。更新条目。
git push
时,它会提示输入个人访问令牌。简单地重置现有凭证是行不通的。
转到设置→开发人员设置→如果不存在则生成新令牌。
或者复制令牌(如果存在)。
https://i.stack.imgur.com/z6MLO.png
然后设置令牌:
git remote set-url origin https://<token>@github.com/<username>/<repo>.git/
我之前在 Linux 上使用 git pull
并设置了密码。
如果是这种情况,您唯一需要做的就是使用令牌代替密码。
转到 Personal access tokens 生成访问令牌。
这是 git pull
的示例
git pull
Username for 'https://github.com': gitusername
Password for 'https://yourusername@github.com': //Then enter generated token
首先在 GitHub 上创建令牌:
单击个人资料图片,然后在菜单中选择设置 在底部左侧菜单中选择开发人员设置 在左侧菜单中选择个人访问令牌(第三个选项)选择生成新令牌并执行以下步骤。
如果您尚未安装 GitHub CLI,则不会在您的钥匙串访问中找到它。因此,您应该先安装它。
安装 GitHub CLI for macOS brew install gh For Windows: winget install gh scoop install gh choco install gh 在命令行输入 gh auth login,按照提示,提供以下答案 ?您要登录什么帐户? GitHub.com ?您首选的 Git 操作协议是什么? HTTPS?使用您的 GitHub 凭据对 Git 进行身份验证?是的 ?您想如何验证 GitHub CLI?粘贴身份验证令牌 粘贴您在 GitHub 上创建的令牌,然后按 Enter。
Mac 用户——一个简单的解决方案。
在 GitHub 中设置个人访问令牌:
设置 → 开发者设置 → 个人访问令牌
打开钥匙串→输入“GitHub”
将密码更改为个人访问令牌。
尝试提交/推送。
选择“始终允许”,一切照旧。
对于那些将 Sourcetree 与 现有存储库 一起使用的用户,您必须像这样更新存储库 URL https://<your_token>@github.com/username/repo.git
这是取自 this answer。
有效!
获得上述 here 的令牌密钥后:
在 GitHub 上创建个人访问令牌 从您的 GitHub 帐户转到设置 => 开发人员设置 => 个人访问令牌 => 生成新令牌(提供您的密码)=> 填写表格 => 单击生成令牌 => 复制生成的令牌(它将类似于 ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta)
在您的终端中使用以下内容:
git clone https://your_username:your_github_token@github.com/username/private-repo.git
在 Linux 中,您可以在 GitHub 中生成新的访问令牌并直接替换它来代替 ~.git-credentials
文件中的密码。
密码部分以 :
开始,以 @
结束。
我无法克隆总是给出此错误的项目。我鼓励的解决方案是,在帖子中说出帖子时生成令牌后,我按照如下所述进行了操作。
使用个人访问令牌克隆新项目。
对于克隆,您也只需像在步骤 2 中所做的那样修改 URL。
克隆存储库的旧方法:
git clone repository_URL folder_name
git clone https://github.com/<user>/<repository> my_project
使用个人访问令牌进行克隆的新方法:
git clone https://<token>@github.com/<user>/<repository> my_project
我分享我的解决方案。
对于 Mac 用户
生成令牌并将其设置在钥匙串中。
This quick video explains it well。
对于 Windows 用户
您需要使用新生成的令牌设置 Credential Manager,而不是钥匙串。
Here is a quick video for Windows
适用于 Windows 用户的快速解决方案
打开 Credential Manager 并删除已保存的 Git 凭据:https://github.com。
https://i.stack.imgur.com/tyx1w.jpg
在这一步之后,再次运行命令以在终端中拉/推。 GitHub 会自动要求使用您的默认浏览器登录(确保您在默认浏览器中使用 GitHub 登录)。
https://i.stack.imgur.com/8oNcA.jpg
登录成功后,我们收到以下消息:
https://i.stack.imgur.com/Rgn4f.jpg
如需更多相关帮助,您还可以观看this video。
Android Studio 北极狐解决方案(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 推送存储库,但再次失败。
然后在 this article 之后,我在命令行中执行了以下操作:
cd <project-directory>
git remote set-url origin https://<TOKEN>@github.com/<user_name>/<repo_name>.git
我再次从 Android Studio 推送,终于成功了!
在三个命令中:
首先按照官方文档中的说明创建一个令牌:Creating a personal access token
然后重置 Git 凭据
git config --global --unset credential.helper
克隆或拉取您的存储库:
`git pull` or `git clone`
然后输入令牌作为您的密码。
如果要保存令牌,可以使用:
git config --global credential.helper cache
最近 GitHub 更新了他们的远程:支持密码验证。它于 2021 年 8 月 13 日被删除,以使用 PAT(个人访问令牌)代替访问 GitHub API。
您可以在博文 here 中了解相关信息。
现在启用 PAT
登录到您的 GitHub 帐户。
按照这篇文章进行下一步操作。
现在要在命令行上使用令牌,请执行以下操作:
git clone https://github.com/username/repo.git
Username: your_username
Password: your_token
请注意,您的令牌有到期时间,必须保密,并在您需要在命令行上进行身份验证时使用。
小心
如果您要克隆到由以下人员拥有的存储库中:
组织
确保您是该组织的成员
或者,如果是一些个人存储库,
确保您已启用以下功能
组织/个人将需要启用远程克隆和分叉,如下所示:
转到组织设置:
https://i.stack.imgur.com/s5Jie.png
启用成员权限:
对于想要使用 Sourcetree 的人:
只需在源路径中复制如下:
https://<token>@github.com/<username>/<repo>
https://i.stack.imgur.com/7vp7Q.jpg
到目前为止我找到的最佳解决方案:
安装 GitHub CLI、brew install gh 或检查如何为其他操作系统安装 在终端中输入 gh auth login 按照如下方式进行操作:您要登录哪个帐户?选择 GitHub.com 您首选的 Git 操作协议是什么?选择 HTTPS 使用您的 GitHub 凭据对 Git 进行身份验证?选择是 您希望如何验证 GitHub CLI?选择使用网络浏览器登录(复制一次性代码并粘贴到浏览器中)按“Enter”在浏览器中打开 github.com
如果您想第一次克隆:
git clone https://<repository_owner>:<personal_access_token>@github.com/<repository_owner>/<repo>.git