作为断电的一部分,密码身份验证被暂时禁用。请改用个人访问令牌

Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead

我使用用户名密码来推送我的代码。它已经工作了几个月,但突然间我做不到并且出现了这个错误:

Username for 'https://github.com': shreyas-jadhav
Password for 'https://shreyas-jadhav@github.com':
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead.
remote: Please see https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/ for more information.

请注意,link 没有帮助。即使使用生成的令牌也无济于事。

Moderator Note: This is part of a planned and soon-to-be permanent service change by GitHub

我今天下午遇到了这个问题,并通过用参考 2 中生成的令牌替换我计算机上的 GitHub 密码解决了这个问题,如参考 3 中所述。

密码验证已被 GitHub 禁用,不再受支持。创建并使用 personal access token (PAT) 而不是密码。

要遵循的步骤:

  1. 从钥匙串中删除 GitHub 存储的凭据。 (例如,在 Mac 上使用“Keychain Access”或在 Windows 上使用“Credential Manager”)
  2. 从 GitHub 生成访问令牌 设置开发者设置个人访问令牌生成新令牌
  3. 保存令牌 - 因为它只能在那里使用一次
  4. 运行 命令 git fetch(或 git push,如果抓取不需要权限)

    If on Windows, you must run this from PowerShell, not the command prompt (CMD). The command prompt consistently fails with the remote: Password authentication is temporarily disabled message, despite identical inputs.

  5. 它会询问您的用户名和密码。

    If it does not ask you for your username and password, you must change your Git remote URL to contain your username: https://USERNAME@github.com/repo-owner/repo-name.git (see approach 2 for instructions on changing remote URL)

  6. 在询问密码时使用访问令牌而不是密码(您必须输入两次)

或者第二种方法:

  1. 从 GitHub 生成访问令牌: 设置开发者设置个人访问令牌生成新令牌
  2. 在本地更新源的 URL:git remote set-url origin https://<token>@<git_url>.git
  3. 拉一次:git pull https://<token>@<git_url>.git
  1. 从 GitHub 的 developer settings

    生成一个新令牌
  2. 更新遥控器URL:

    git remote set-url origin https://<token>@github.com/<Git_URL>
    
  3. 拉一次:

    git pull https://<token>@<Git_URL>.git
    

你很高兴。

适用于 macOS,Windows 和 Linux

解决方案 1

  1. 删除现有存储库(如果您有任何当前更改,请对其进行备份):

    mv my-repo my-repo.backup
    
  2. 创建 SSH 密钥并将其添加到 GitHub(参见 GitHub documentation

  3. 克隆 SSH 存储库:git clone git@github.com:group/repo-name.git

方案二推荐方案

  1. git remote remove origin

  2. 您必须添加访问令牌(参见 GitHub documentation 生成令牌)

  3. git remote add origin https://<token>@<git_url>.git

  4. git pull https://<token>@<git_url>.git

使用Visual Studio Code

  1. 删除您的 GitHub 访问权限:
git credential-osxkeychain erase
⏎  host=github.com
⏎  protocol=https
  1. git pushgit pull

    它将通过模式对话框提示您。单击允许并按照流程进行操作。

Ubuntu 服务器和现有 Git 存储库的解决方案

删除密码:

git config --global --unset user.password;
git config --local --unset user.password;

改变remote.origin.url。将 替换为您的 GitHub 用户名:

git config --global --replace-all remote.origin.url "https://<username>@github.com/PPEProjects/smile-eyes-be.git";
git config --local --replace-all remote.origin.url "https://<username>@github.com/PPEProjects/smile-eyes-be.git"

Pull/push

git pull
git push origin HEAD:develop

输入从 Personal access tokens.

生成的个人访问令牌

如果您使用的是 macOS

  1. 首先请删除钥匙串中的所有 GitHub 凭据,然后请生成您的令牌用作密码(由于 GitHub 安全策略):GitHub* → 设置开发人员设置个人访问令牌.

  2. 尝试推送或拉取一些最新的东西 to/from 您的存储库。然后 Git 会要求您输入用户名和密码。输入您的用户名和从 GitHub 生成的令牌。

macOS 解决方案

我只是按照以下说明操作,这解决了我的问题。

  1. 为 GitHub 生成个人访问令牌。 Process to generate token
  2. 打开您的钥匙串访问
  3. 搜索 github.com 并双击它。
  4. 使用您最近生成的密钥更新密码

N.B:我不确定这是否适用于其他操作系统用户。

如果您使用的是 HTTPS

  • 在您的 token settings as indicated in the documentation

    中生成一个令牌
  • 如果存储库已经存在,则您必须按照以下格式更改远程 URL:https://<username>:<token>@github.com/<repository_url>

    git remote remove origin
    git remote add origin https://<USERNAME>:<TOKEN>@<GIT_URL>.git
    git pull # Verify
    
  • 如果您克隆存储库

    git clone https://<USERNAME>:<TOKEN>@<GIT_URL>.git
    

试试这个(对我有用):

  1. 使用本指南生成 SSH 密钥:Generating a new SSH key
  2. 删除所有使用 HTTPS 的旧遥控器 git remote remove origin;
  3. 使用 SSH 引用添加新的远程(您可以使用存储库中的“代码”按钮获取它,然后按“ssh”)。

之前接受的答案 完成了这项工作,但它并不安全,因为我们以纯文本形式存储令牌。

在我看来,将其存储在钥匙串中是更好的方法。

Visual Studio代码请阅读

对于Windows:

你可以试试下面的@Venryx评论,但我没有测试过。


对于Mac:

我现在刚遇到这个问题

按照建议,我去了 development settings by following this URL 并生成了一个令牌。

然后我在 Mac:

中访问我的钥匙链

我删除了(全部)GitHub

的行

现在我去了终端并推送了伪代码

git push

终端要求我输入我的帐户的电子邮件和密码。

我输入了我的电子邮件,然后输入了我之前生成的令牌作为密码。

它又开始工作了。

  1. Create a personal access token

  2. 在您的 Visual Studio Code 命令行上:

    git config --global credential.helper [YOUR_TOKEN]
    

GitHub 正在删除用户名密码验证

其他人提到的替代方法:

您可以安装和配置 GitHub CLI. It is much better to set up using OAuth。无需从钥匙串中手动删除凭据。

Homebrew (brew) 的 macOS 上,安装更简单:

运行 brew install gh 并遵循以下内容:

  1. 你想登录什么账号?GitHub.com,选择GitHub
  2. Git 操作的首选协议是什么? 选择 HTTPS
  3. 使用您的 GitHub 凭据验证 Git? 选择 YES
  4. 您想如何验证 GitHub CLI?选择使用网络浏览器登录
  5. 复制终端中显示的代码 -> B7C1-8E67
  6. Enter 在浏览器中打开 github.com
  7. 使用浏览器进行身份验证

完成。

像往常一样开始使用 Git 命令。

快速热修复

转到Personal access tokens并重新生成最后一个令牌:

如果您使用的是 HTTPS 版本而不是 SSH,则会出现此错误,因为 GitHub 正在删除 HTTPS 方法来维护存储库。

  1. 如果您还没有通过 ssh-keygen 生成 SSH 密钥并继续按 Enter 直到结束
  2. cat ~/.ssh/id_rsa.pub - 复制结果
  3. 访问https://github.com/settings/keys
  4. 新建 SSH 密钥 并将密钥粘贴到文本框中。标题可以随便起
  5. cd <into your project's directory>
  6. git remote set-url origin git@github.com:<username-here>/<repository-name-here>.git

一切顺利!

以下步骤对我来说非常有效

要遵循的步骤:

  • 从GitHub、设置生成访问令牌→开发人员设置个人访问令牌生成新令牌

  • 保存令牌 - 因为它只能在那里使用一次

  • 在系统中搜索.git-credential文件

  • 在该文件中用户名后使用访问令牌而不是密码。

首先来自post:Token authentication requirements for API and Git operations,它说

Mid-2021 – Personal access or OAuth tokens will be required for all authenticated Git operations.

所以你需要使用personal access token(PAT)来推送:

1 获取您的个人访问令牌

在此处登录以访问存储库并添加新的个人访问令牌:Personal access tokens。生成一个并妥善保管令牌(离开后无法显示)。

(在Android Studio中,您需要获得“repo”、“gist”和“read:org”的权限)

2 使用个人访问令牌推送

获得令牌后,您可以使用如下命令推送

git push https://[personal access token]@github.com/[user name]/[repository Name].git

您所要做的就是使用生成的令牌而不是传统密码:

旧方法使用密码

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

Username: your_username
Password: your_password

使用令牌的新方法:

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

Username: your_username
Password: your_token

第 1 步:从 GitHub

生成 API 令牌

第 2 步:用新生成的令牌替换您之前缓存的密码

  • 如此处所述,您必须修改缓存在您电脑中的本地 GitHub 登录凭据: Remove credentials from Git

您可以通过 GitHub 控制面板生成 PAT(个人访问令牌)。

  • 第 1 步:登录您的 GitHub 帐户。

  • 第 2 步:在任意页面的右上角,单击您的个人资料照片,然后单击“设置”。

  • 第 3 步:在左侧边栏中,单击开发人员设置

  • 第 4 步:在左侧边栏中,单击个人访问令牌

  • 第 5 步:单击生成新令牌

  • 第 6 步:为您的令牌指定一个描述性名称。

  • 第 7 步:Select 范围或权限。您想要授予此令牌。要使用您的令牌从命令行访问存储库, select repo.

  • 第 8 步:单击生成令牌

将您的令牌复制到一个安全的位置,因为一旦您离开该页面,您将无法取回它,除非您创建一个新的。

这是一个简单解决方案:

  • 转到GitHub → 设置开发人员设置个人访问令牌.重新生成您的令牌并复制它。
  • 在您的任何本地存储库上,当 git push 时,输入您的用户名,密码是生成的令牌

无需为每个 HTTPS Git 操作手动输入您的 令牌,您可以使用 Git 客户端缓存您的令牌。

  • 在终端中,输入以下内容:
# Set Git to use the credential memory cache
git config --global credential.helper cache
  • 要更改默认密码缓存超时,请输入以下内容:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'

还有一个非常简洁的脚本有助于将 HTTPS 克隆的 Git 存储库转换为使用 ssh 协议,而无需删除和克隆 Git 存储库:

Convert HTTPS GitHub clones to use SSH

您不需要移除遥控器。添加一个新的然后拉(按照接受的答案的建议)。

对我有用的最简单的解决方案(在 Linux 上)是使用 gh auto login 并遵循 CLI 说明。不需要进一步的步骤。

如果您没有 ghinstall it following this link,取决于您的 OS。

我试了各种方法,终于对我有用了。由于这个错误,我无法推送我的存储库,所以请至少尝试一次!

_____________________________generate 个人访问令牌:

  1. 单击此处并生成个人访问令牌。这太容易了。

    https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

    现在只需借助 PAT 而非密码和用户名推送即可___________________

  2. 将更改推送到您的存储库:

    git push https://[Personal Access Token]@github.com/[User Name]/[Repository Name].git
    

如果您不想以纯文本形式存储您的令牌(通过修改远程仓库的 URL),您可以这样做:

  1. 通过following the official link
  2. 生成一个新令牌
  3. 确保通过单击以下按钮复制令牌。如果您双击文本并复制它,它会添加一个额外的 space 并且您将不断收到相同的错误(即使您不再使用密码,而是使用令牌)

我在 Visual Studio 代码中尝试推送时收到此错误...但是我打开终端并使用用户名和密码推送没有问题。

这可能是您可以尝试的。

这对我有用:

  1. 生成 personal access token(不要忘记复制令牌)

  2. 打开您的 Keychain Access (Mac) 或 Credential Manager (Windows)。

  3. 用新的 personal access token in KeyChain Access/Credential Manager

    更新 GitHub 密码
  4. 最后一步:执行 Git 克隆(确保将存储库克隆到正确的目录位置)

    git clone https://github.com/username/repo.git
    
    Username: your_username
    Password: your_token
    

在我的例子中,它没有提示我输入用户名和密码,因为它已经在 Keychain Access.

中更新了