【问题标题】:Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead [duplicate]作为掉电的一部分,密码身份验证被暂时禁用。请改用个人访问令牌[重复]
【发布时间】:2021-09-12 09:54:42
【问题描述】:

我使用用户名密码来推送我的代码。它工作了几个月,但突然间我无法做到这一点并收到此错误:

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.

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

版主注意:我是part of a planned and soon-to-be permanent service change by GitHub

【问题讨论】:

  • GIthub 正在移除用户名密码认证,从现在开始你需要使用令牌
  • 我有同样的问题,不,该页面没有帮助。问题是,即使使用生成的令牌作为密码,也会出现相同的错误消息。
  • 到底为什么要使用“掉电”这个词??
  • @RossPresser “断电”是您失去一些(但不是全部)权力的地方。这是对白炽灯泡时代的倒退,在白炽灯泡时代,小的功率损失可能会导致灯泡明显变暗。在这种情况下,GitHub 正在“调暗灯光”,让每个人都知道该服务的待定更改(即密码将很快完全停止工作)。

标签: git github token github-api git-pull


【解决方案1】:

这是一个简单的解决方案:

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

您可以使用 Git 客户端缓存您的令牌,而不是为每个 HTTPS Git 操作手动输入您的 token

  • 在终端中,输入以下内容:
# 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'

【讨论】:

  • 这是最好的答案……但又多了一步。在此之前我必须设置“git config --unset credential.helper”...然后我输入“git config --global credential.helper cache”,然后我就很好了。我必须最后一次输入我的用户名/新密钥......然后我很好。
  • “密码是生成的令牌”这是我缺少的部分!
【解决方案2】:

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

2021 年中 - 所有经过身份验证的 Git 操作都需要个人访问权限或 OAuth 令牌。

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

1 获取您的个人访问令牌

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

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

2 使用个人访问令牌推送

拿到令牌后,你可以push这样的命令:

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

【讨论】:

  • 感谢您发布此内容,因为它也适用于要点,如 git push https://[Personal Access Token]@gist.github.com/[Gist ID].git 。我之所以需要这个,是因为尽管在创建我的令牌时检查了create gists 选项,并且与 git 进行了 repo 交互,但在 2021 年 8 月 13 日之后推送到 gists 不起作用。
【解决方案3】:

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

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

Visual Studio Code请阅读crg's answer

对于 Windows:

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


对于 Mac:

我现在才遇到这个问题

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

然后我去了我的 Mac 中的钥匙链访问:

我(全部)删除了 GitHub 的行

现在我去终端并推送虚拟代码

git push

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

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

它又开始工作了。

【讨论】:

  • 在 Windows 上,使用“凭据管理器”而不是“钥匙串访问”。另外,请确保您使用“Powershell”而不是命令提示符,否则会出错。有关完整说明,请参见此处:stackoverflow.com/a/68192394/2441655
  • github 应该把这篇文章添加到他们的文档中
  • 你不需要删除钥匙串,你只需编辑密码并添加令牌
  • 此方法将替换 github.com 的 Safari 登录凭据,这反过来可能会根据令牌权限破坏未来的第三方 oauth 批准。
【解决方案4】:

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

【讨论】:

  • 使用 SSH 和 RSA 密钥。 ssh-keygen -t rsa -b 4096 -C "github_account_email" 。这将生成两个 RSA 密钥,一个带有 .pub 扩展名,将其放在 github 中,因为这是公共令牌,并将私有令牌保存在本地计算机中,从现在开始,每当您推送时,您将使用 ssh 代替通过 https 连接
【解决方案5】:

这对我有用:

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

  2. 打开您的钥匙串访问权限 (Mac) 或Credential Manager (Windows)。

  3. KeyChain Access/Credential Manager中的新personal access token更新GitHub密码

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

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

在我的情况下,它没有提示我输入用户名和密码,因为它已经在 Keychain Access 中更新。

【讨论】:

    【解决方案6】:

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

    要遵循的步骤:

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

      如果在 Windows 上,您必须从 PowerShell 运行它,而不是命令提示符 (CMD)。尽管输入相同,但命令提示符始终失败并显示 remote: Password authentication is temporarily disabled 消息。

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

      如果它没有询问您的用户名和密码,您必须更改您的 Git 远程 URL 以包含您的用户名https://USERNAME@github.com/repo-owner/repo-name.git(有关更改远程 URL 的说明,请参见方法 2)

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

    或者第二种方法:

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

    【讨论】:

    • 这刚刚对我有用,不知道为什么它被否决了。只需使用您常用的 github 用户名以及以下指南中的访问令牌,而不是您的密码。 docs.github.com/en/github/authenticating-to-github/…
    • 我认为第一步最重要。如果跳过,错误仍然会出现。
    • 或者更好的是 SSH 密钥
    • 注意:上述方法对我有效,但仅在从 Powershell 运行时。当我从常规命令提示符运行它时,它每次都失败。 (我已经确认了 5 次以上)
    • 我做了更多的测试,发现了另一个条件:上面的方法(#1)只有在 Git url 包含你的用户名时才有效。例如,这有效:https://ME@github.com/ME/my-repo.git 但这无效:https://github.com/ME/my-repo.git
    【解决方案7】:
    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
      

    你可以走了。

    【讨论】:

    • 试试 Github CLI -> cli.github.com 。它做了删除的事情,你只需要做 OAuth
    • 什么是
    • 这不是一个好的解决方案 IMO。这里的问题是,PAT 以纯文本形式存储在远程 URL 本身中。因此,如果有人能够访问远程 URL,那么他们就可以访问您的 PAT 来做任何事情。令牌应该安全地存储在钥匙串或类似的东西中。编辑:我特别指的是第 3 步,您将 PAT 作为前缀添加到远程 URL。
    • 嘿伙计们,你可以设置远程的 url,而不是删除和添加它。请按照说明使用git remote set-url &lt;remote name&gt; https://&lt;token&gt;@github.com/&lt;git_url&gt;
    • 没有“git dev 设置”。我希望得到一个带有金色徽章的答案,以了解 git 和 GitHub 之间的区别。
    【解决方案8】:

    适用于 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

    解决方案 2推荐解决方案

    1. git remote remove origin

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

    3. git remote add origin https://&lt;token&gt;@&lt;git_url&gt;.git

    4. git pull https://&lt;token&gt;@&lt;git_url&gt;.git

    使用 Visual Studio Code

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

      它会通过一个模态对话框提示您。点击允许并按照流程操作。

    【讨论】:

    【解决方案9】:

    Ubuntu Server 和现有 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"
    

    拉/推

    git pull
    git push origin HEAD:develop
    

    输入从Personal access tokens生成的个人访问令牌。

    【讨论】:

      【解决方案10】:

      如果您使用的是 macOS

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

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

      【讨论】:

      • 或者,在钥匙串 Access.app 中搜索“github”并找到 Kind 列为“Internet Password”的条目(您可能有“Web form password”条目,这些不是终端正在使用)。双击条目进行编辑。选中“显示密码”复选框。用 github 令牌替换密码。单击“保存更改”。您现在应该能够像以前一样做所有事情了。希望对您有所帮助。
      • 重要的是要注意这有两个“隐藏条件”才能工作:1)您的 git 远程 url 必须包含您的用户名,例如。 https://USERNAME@github.com/..., 2) 在 Windows 上,您必须使用 Powershell 而不是命令提示符。更多详情请看这里:stackoverflow.com/a/68192394/2441655
      • 这对我来说适用于 MacOS intel 和 m1 stackoverflow.com/a/68192584/7942242
      【解决方案11】:

      macOS 解决方案

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

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

      注意:我不确定这是否适用于其他操作系统用户。

      【讨论】:

      • 在 Windows 上,使用“凭据管理器”而不是“钥匙串访问”。请注意,您可能还需要更改您的 git origin 以包含您的用户名(否则至少对我来说会出错)。有关完整说明,请参见此处:stackoverflow.com/a/68192394/2441655
      • 这对我来说适用于 macOS stackoverflow.com/a/68192584/7942242
      • 此解决方案是 8 月 13 日之后唯一对我有用的解决方案。就我而言,更新远程 URL 解决方案不起作用。
      【解决方案12】:

      如果您使用的是 HTTPS

      • 在您的token settings 中生成一个令牌,如the documentation 中所示

      • 如果存储库已经存在,那么您必须将远程 URL 更改为以下格式:https://&lt;username&gt;:&lt;token&gt;@github.com/&lt;repository_url&gt;

        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
        

      【讨论】:

      • 这就像一个魅力!谢谢
      【解决方案13】:

      试试这个(它对我有用):

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

      【讨论】:

        【解决方案14】:
        1. Create a personal access token

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

          git config --global credential.helper [YOUR_TOKEN]
          

        【讨论】:

        • 注意:如果您已经将 git 设置为从系统凭证管理器中读取,而不是在 git 配置中硬编码条目,这将不起作用。不幸的是,git 没有警告你这一点,所以只是默默地失败,因为它使用过时的 credential-manager 条目而不是上面命令添加的新访问令牌。要将访问令牌添加到您的系统凭据管理器,请参见此处:stackoverflow.com/a/68192394/2441655
        【解决方案15】:

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

        其他人提到的另一种方法:

        您可以安装和配置GitHub CLI。使用OAuth 进行设置要好得多。无需手动从钥匙串中删除凭据。

        在带有Homebrew (brew) 的 macOS 上,安装更加简单:

        运行brew install gh 并执行以下操作:

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

        完成。

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

        【讨论】:

          【解决方案16】:

          快速热修复

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

          【讨论】:

            【解决方案17】:

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

            1. 如果您还没有通过ssh-keygen 生成 SSH 密钥并继续按 Enter 直到结束
            2. cat ~/.ssh/id_rsa.pub - 复制结果
            3. 访问https://github.com/settings/keys
            4. New SSH Key 并将密钥粘贴到文本框中。标题可以是你想要的任何东西
            5. cd &lt;into your project's directory&gt;
            6. git remote set-url origin git@github.com:&lt;username-here&gt;/&lt;repository-name-here&gt;.git

            你很高兴!

            【讨论】:

              【解决方案18】:

              以下步骤对我来说效果很好

              要遵循的步骤:

              • 从 GitHub 生成访问令牌,设置开发者设置个人访问令牌生成新令牌

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

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

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

              【讨论】:

                【解决方案19】:

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

                使用密码的旧方法:

                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 步:用新生成的令牌替换之前缓存的密码

                【讨论】:

                  【解决方案20】:

                  您可以通过 GitHub 仪表板生成您的 PAT(个人访问令牌)。

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

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

                  • 第 3 步:在左侧边栏中,点击开发者设置

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

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

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

                  • 第 7 步:选择范围或权限。您想授予此令牌。要使用您的令牌从命令行访问存储库, 选择回购

                  • 第 8 步:点击生成令牌

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

                  【讨论】:

                    【解决方案21】:

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

                    Convert HTTPS GitHub clones to use SSH

                    【讨论】:

                    【解决方案22】:

                    您无需移除遥控器。添加一个新的然后拉取(如接受的答案所建议的那样)。

                    对我有用的最简单的解决方案(在 Linux 上)是使用 gh auto login 并按照 CLI 说明进行操作。无需进一步的步骤。

                    如果您没有ghinstall it following this link,具体取决于您的操作系统。

                    【讨论】:

                    • 修复错误的最佳方法是转到项目目录,然后打开 ."git" 打开 "config" 文件并删除以下行:-------- [credential] helper = store ---------- 现在尝试 git pull 或 push 你会看到输入用户名密码屏幕这次输入 github 令牌而不是密码。
                    【解决方案23】:

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

                    _______________生成个人访问令牌:

                    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
                      

                    【讨论】:

                    • 这个解决方案效果最好,因为我在 linux 服务器和 windows 和 mac 钥匙串不可用。
                    • 这在 Windows 10 上对我有用。感谢您将其留在这里。简单的。 GitHub 应该在文档中包含类似的内容。
                    • @Adam391 先生,真是太棒了!谢谢!!!!
                    【解决方案24】:

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

                    这可能是你可以尝试的。

                    【讨论】:

                      【解决方案25】:

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

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

                      【讨论】:

                        猜你喜欢
                        • 2021-09-12
                        • 2021-10-18
                        • 2021-10-17
                        相关资源
                        最近更新 更多