【问题标题】:Git push results in "Authentication Failed"Git 推送导致“身份验证失败”
【发布时间】:2013-07-13 14:39:18
【问题描述】:

我使用 GitHub 已经有一段时间了,我对 git addgit commitgit push 都很好,到目前为止没有任何问题。突然我有一个错误说:

致命:身份验证失败

在终端中,我克隆了一个存储库,处理了一个文件,然后我使用git add 将文件添加到提交日志中,当我执行git commit 时,它运行良好。最后,git push 要求输入用户名和密码。我把它们正确地放进去,每次我这样做时,它都会说同样的错误。

这个问题的原因是什么,我该如何解决?

.git/config的内容是:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://www.github.com/######/Random-Python-Tests
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = #####
        email = ############

【问题讨论】:

  • 你在github上的用户名是什么,.git/config的内容是什么?
  • 添加到问题中,cmets 不应对长文本
  • 是的,抱歉,我出于习惯开始评论,然后更改了它。
  • 您的网址看起来不正确。我认为应该以https:// 开头,而不是http://
  • @Amey 好点。这实际上来自我的回答:stackoverflow.com/a/62870126/6309

标签: git authentication github visual-studio-code


【解决方案1】:

我的解决方案是:

  1. 访问C:\Users\USERNAME\AppData\Local\Atlassian\SourceTree
  2. 找到文件passwd
  3. 右键单击该文件打开 Notepad
  4. 您将看到一个用户名和密码列表,例如:

用户名@dev.azure.com AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAMUOX3Q56PEuXEBSDFAASEH...

  1. 找到输入错误的用户名和密码,删除
  2. 保存文件,然后关闭它
  3. SourceTree 将在下次推送或获取时再次询问您的用户名和密码

【讨论】:

    【解决方案2】:

    如果您在 GitHub 帐户中启用了双因素身份验证,您 将无法使用您的帐户密码通过 HTTPS 推送。反而 您需要生成个人访问令牌。这可以在 您的 GitHub 帐户的应用程序设置。使用此令牌作为您的 密码应该允许您通过 HTTPS 推送到远程存储库。 像往常一样使用您的用户名。

    Creating a personal access token

    如果设置为 HTTPS,您可能还需要更新存储库的来源。执行此操作以切换到 SSH:

    git remote -v
    git remote set-url origin git@github.com:USERNAME/REPONAME.git
    

    【讨论】:

    • 确实如此。 +1。我在这里展示了 PAT stackoverflow.com/a/19223896/6309 并详细介绍了那里的过程:stackoverflow.com/a/18607931/6309
    • 启用 2FA 后,我需要重新生成我的 rsa 密钥才能正常运行 Git。
    • 谢谢!只是有这个错误,这有帮助,只是指出。创建个人访问令牌后,您复制该令牌,然后在推送存储库时,它会询问您的用户名和密码。将访问令牌粘贴到密码中
    • 您也可以使用git remote add origin https://username:access-token@github.com/username/repo.git 来存储您的个人访问令牌。
    • 对我来说,我所要做的就是在我的 GitHub 帐户上从我的本地机器启用 SSH 身份验证,然后切换到 ssh git 远程地址; help.github.com/articles/changing-a-remote-s-url
    【解决方案3】:

    我遇到了同样的错误。我尝试了本页中提到的所有解决方案,但它们都不起作用。终于找到了解决办法。

    如果您的系统密码最近随时更改,则会出现此类错误。它将尝试从旧密码进行验证。 所以,请按照以下步骤操作:

    1. 转到控制面板
    2. 点击用户帐户
    3. 凭证管理器
    4. 转到管理 Windows 凭据
    5. 转到通用凭据
    6. 展开 Git 服务器选项卡
    7. 点击从保险库中删除
    • 另外,您可以点击编辑并直接更改您存储在此处的密码。

    【讨论】:

    • 这与用户 Sherlock 一年多前发布的内容完全相同,并在此答案发布前 3 分钟被删除。
    【解决方案4】:

    如果您使用 SSH 并使用 HTTPS 进行克隆,这将不起作用。

    使用 SSH 克隆,然后推送和拉取应该可以正常工作!

    【讨论】:

      【解决方案5】:

      如果您在 Windows 上并尝试推送到具有域用户作为存储库用户 (TFS) 工作的 Windows 服务器,请尝试使用 Internet Explorer 进入 TFS URL(即http:\\tfs)。输入您的域帐户凭据并显示该页面。

      警告:仅使用 Internet Explorer!其他浏览器不会更改您的系统凭据。

      现在转到Git Bash 并更改存储库的远程用户,如下所示:

      git config user.name "domainName\userName"
      

      完成了。现在你可以推送了!

      【讨论】:

        【解决方案6】:

        Android StudioCanary build 3.1+,如果你使用的是Android Studio Git工具,那么你可以使用以下:

        • 点击Android Studio
        • 点击首选项...
        • 进入 版本控制GitHub
        • 这里将 Auth type 更改为 Password
        • 此步骤将要求您输入登录名和密码。输入您的 GitHub 用户名作为登录名,输入 GitHub 密码作为密码。
        • 点击测试按钮。

        如果连接成功,那么你就完成了,你可以使用Android Studio GitHub GUI客户端了。

        【讨论】:

          【解决方案7】:

          如果您在 GitHub 帐户上启用了two-factor authentication,请登录您的 GitHub 帐户并转到

          New personal access token

          要生成新的访问令牌,复制该令牌并粘贴为终端中的身份验证密码。

          【讨论】:

            【解决方案8】:

            确保您的 SSH 密钥已添加到您当前的 SSH 会话中。

            1. cat ~/.ssh/id_rsa.pub 的输出复制到您的 GitHub 设置中的 SSH 和 GPG 密钥下。

            2. 使用ssh-add ~/.ssh/id_rsa.pub 更新您当前的 SSH 会话。

            我正在使用安装了OpenSSH 的 Windows PowerShell

            【讨论】:

              【解决方案9】:

              在 Windows 上,尝试以下步骤编辑删除保存的凭据:

              1. 点击开始
              2. 类型:Credential Manager(在 Windows 10 上,这是在“开始Settings”下。然后搜索“Credential Manager”)
              3. 查看 Windows 凭据管理器 快捷方式并双击它以打开应用程序。
              4. 应用程序打开后,单击 Windows 凭据 选项卡。
              5. 找到要删除/更新的凭据。它们将以“git:”开头,可能以“ada:”开头
              6. 单击凭据条目。它将打开条目的详细信息视图。
              7. 根据需要点击EditRemove并确认。
              8. 起泡、冲洗、必要时重复。

              【讨论】:

              • 就我而言,它不在“Windows 凭据”中,而是在“通用凭据”中。删除凭据就可以了。
              • 可以通过(windows + R) -> "control /name Microsoft.CredentialManager"打开上面的窗口
              • 凭证可能在那里,但前面没有'git:'。那是行不通的。它需要以 'git:' 开头
              • 我的雇主将 Windows 身份验证设置为 Git Hub,因此每次我更改 Windows 凭据时,我都必须更新它以进行源代码控制。你的回答奏效了。
              • 很棒的答案。我们维护一个内部 BitBucket 存储库,其中我们的每个帐户凭据都经过我们组织的身份验证。最近我的所有存储库都无法推送代码更改。虽然我已经能够逐案更改凭据,但我真的不想为每个项目都这样做。 @Pradeep 的方法让我能够解决根本原因,而不仅仅是更改密码。我们的组织最近更改了内部域的名称,因此通过集中编辑凭据,我能够修复我的所有项目。
              【解决方案10】:

              在 Windows 上,如果您在输入正确的密码和用户名时发现身份验证错误问题,那就是 Git 问题。为了解决这个问题,当你在你的机器上安装 Git 时,取消选中 Enable Git Credential Manager 选项。

              【讨论】:

              • 我没有找到这种类型的解决方案。我已经重新安装了 git
              • 也解决了我的问题(安装了 git,只是重新安装了它,取消选中这个:没关系!)
              • 我也必须检查“使用本机 Windows 安全通道库”。默认不勾选。
              • 重新安装 git 对我来说很好。下载最新的安装程序。在安装过程中启用 git 凭证管理器的最新功能。在你推送回购之前。将弹出一个窗口,您将能够通过浏览器登录。
              【解决方案11】:

              基本上我的凭据已过期,我正面临这个问题。

              以下两个命令帮助了我:

              git config --global --unset credential.helper
              
              git config credential.helper store
              

              下次您尝试推送时,它会要求您提供凭据。

              请按照以下指南了解有关安全和不安全存储用户名和密码的更多详细信息:

              【讨论】:

              • 密码过期后在 Mac 上效果很好。
              • 我这样做了,但它仍然没有提示输入凭据。我还从 Windows 密码管理器中删除了用户凭据。我在这里浏览了几乎所有答案,但没有任何建议?它仅在我将凭据放入地址时才有效,例如git push https://:@
              【解决方案12】:

              我遇到了

              git fetch
              
              fatal: Authentication failed for 'http://...."
              

              在我的 Windows 密码过期并更改后。使用 Windows Credential Manager 多次获取、重启甚至重新安装 Git 都没有帮助。

              令人惊讶的是,正确答案在 cmets 中的某个地方,但不在答案中(其中一些真的很奇怪!)。

              您需要转到 控制面板凭据管理器Windows 凭据 并更新 git:http:/ 的密码/your_repository_address

              【讨论】:

                【解决方案13】:

                我在 Windows 上遇到了同样的问题。大多数时候,由于使用多个 Git 帐户,我通常会遇到这个问题。如果您在 Windows 上,请以管理员身份打开终端并尝试再次运行命令。确保您具有管理员访问权限。

                【讨论】:

                  【解决方案14】:

                  也许您最近更改了 Git 帐户的密码。 你可以试试git push 行加上-u 选项:

                  git push -u origin branch_name_that_you_want_to_push
                  

                  执行上述命令后,会要求输入密码。提供您更新后的密码。

                  【讨论】:

                  • 这行得通,我的环境只需要https
                  • 当然比大多数答案容易得多。 (更改密码应该是导致身份验证错误的最常见原因;-))
                  • 如果您在现有克隆上遇到此问题 - 只需执行 git push -u
                  • 像魅力一样工作。
                  • 我从 Windows 凭据管理器中删除了我的凭据,此命令触发了登录对话框。谢谢!
                  【解决方案15】:

                  确保您有 写入 权限来推送。

                  read ***write*** admin 
                  

                  【讨论】:

                  • 在什么情况下?它去哪儿了?是全部还是部分文字?问题中的配置文件条目的格式为setting = value= 是文字)。
                  【解决方案16】:

                  在 Windows 上,这对我有用,而且它还能记住我的凭据:

                  1. 运行Git Bash

                  2. 指向仓库目录

                  3. 运行git config --global credential.helper wincred

                  【讨论】:

                  • 我花了一段时间才知道它的作用——它使用 Windows 控制面板中的凭据管理器。要停止使用它:git config –global credential.helper unsetSource,更多详情请参阅this answer
                  • @IanW 你的意思是git config --global --unset credential.helper?这就是在 Git Bash 中对我有用的方法。
                  • 小心这个命令,它会用简单的“wincred”替换你的凭证助手的真实路径,这显然不是你需要的。
                  • 我运行这个命令发现它不是我想要的,取消设置的正确方法是git config --global --unset credential.helper。最终,我用git config credential.helper store 恢复了我的正确设置。
                  • 在 Mac 上,回答网络验证码后,这对我有用:git config --global credential.helper osxkeychain
                  【解决方案17】:

                  只是在这里插话,对我来说解决问题的是我只是取消了初始提示,SSH 用我的Bitbucket 帐户打开,我在那里输入密码,一切都按预期工作。

                  【讨论】:

                    【解决方案18】:

                    对我来说,我忘记了我在 github.com 上更改了密码,而我用于 shell 身份验证的钥匙串从未更新为那个新密码。

                    从我的钥匙串中删除所有 Git,然后重新运行 Git 请求有助于解决问题,再次提示我输入新密码。

                    【讨论】:

                      【解决方案19】:

                      只需从您的 .config 文件更改:

                      url = http://www.github.com/###user###/Random-Python-Tests
                      

                      收件人:

                      url = http://###user###@github.com/###user###/Random-Python-Tests
                      

                      【讨论】:

                        【解决方案20】:

                        如果问题仍然存在,请使用正确的凭据:

                        如果您使用的是 Android Studio 2.1 测试版,那么这是一个错误。升级到 beta 2(3 MB 更新文件)。这对我有用。

                        【讨论】:

                          【解决方案21】:

                          问题说明:“git 致命身份验证失败”。我正在使用Bitbucket

                          解决方案:

                          我只是从使用 Bitbucket 的访问管理中删除了该用户,然后添加了相同的用户。 .gitconfig 文件很简单:

                          [user]
                              name = BlaBla
                              email = blabla@gmail.com
                          
                          [push]
                              default = simple
                          

                          【讨论】:

                            【解决方案22】:

                            我也遇到了错误(这就是我来到这里的原因),但没有一个建议对我有用。这是我第一次尝试将本地 Git 存储库部署到 Azure

                            当我收到此错误时,我在尝试几次后重置了我的凭据(通过单击 Azure 中的链接)。问题是此时它告诉我我的用户名已经被占用,所以我也将我的用户名更改为另一个。

                            最后,我手动删除了本地驱动器上的 .git 文件夹,然后重新部署没有问题。

                            【讨论】:

                              【解决方案23】:

                              我遇到了同样的问题。我是这样设置网址的:

                              git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

                              我还从配置文件中删除了这个条目:askpass = /bin/echo

                              然后“git push”向我询问用户名和密码,这次成功了。

                              【讨论】:

                              • 我不需要从配置文件中删除此条目:askpass = /bin/echo
                              【解决方案24】:

                              首先,您可以确保使用正确的 URL:

                              git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git
                              

                              那么,如果它以前工作过,并且没有询问您的用户名,那一定是因为您将凭据(登录名/密码)存储在 $HOME/.netrc 文件中,如 explained here。您可以仔细检查这些设置,并确保您的代理(如果有的话)没有更改。

                              如果还是不行,你可以切换到 SSH URL:

                              git remote set-url origin git@github.com:zkirkland/Random-Python-Tests.git
                              

                              但这意味着您已经在Account settings 中发布了您的 SSH 公钥。


                              对于 Visual Studio Code,另请参阅“git push: Missing or invalid credentials. fatal: Authentication failed for 'https://github.com/username/repo.git'

                              您可以取消选择设置git.terminalAuthentication 以避免错误消息。

                              【讨论】:

                              • 从 HTTPS 切换到 SSH 为我解决了这个问题。
                              • 我为我的 GH 帐户启用了 2 因素身份验证,并将远程 URL 从 HTTPS 切换到 SSH 为我解决了“身份验证失败”问题。说得通。谢谢!
                              • 这也为我解决了这个问题。切换到双重身份验证后,我在我的 GitHub 帐户中设置了一个公钥。
                              • 网址不正确确实是我的问题,我错误地将https:// 更改为git://,而我需要git@github.com:user.repo.git。奇怪的是 git 没有以某种方式报告问题,只是静默挂起
                              • @AlexeyLarionov 由于git:// 是一个有效的(虽然已经过时)协议,它只是简单地尝试并使用它,等待远程服务器监听端口9418。
                              【解决方案25】:

                              启用凭据助手为我解决了这个问题。

                              【讨论】:

                                【解决方案26】:

                                我昨天开始在 Ubuntu 20.04Visual Studio Code 上遇到此问题。

                                我没有对我的 GitHub 凭据进行任何更改,我也没有更改项目中的任何内容,但是我运行了任何 git 命令来与我的远程分支进行通信,例如:

                                git pull origin dev
                                

                                我收到以下错误:

                                远程:未找到存储库。 致命:'https://github.com/MyUsername/my-project.git/'的身份验证失败

                                这对我有用

                                我尝试重新克隆项目,然后运行 ​​git pull 命令,但没有成功。

                                git clone https://my-git-url
                                

                                我尝试使用以下命令再次设置我的凭据,但仍然没有成功:

                                git config --global user.email "email@example.com"
                                git config --global user.name "John King"
                                

                                我尝试删除远程存储库并使用以下命令重新添加它,但仍然没有成功:

                                git remote remove origin
                                git remote add origin https://my-git-url
                                

                                最后,我决定尝试使用我的默认 Ubuntu 终端,它运行良好。我最大的猜测是,这是 Visual Studio Code 中的一个错误,它是在那之前几个小时进行的最后一次更新(请参阅显示发布是在我拥有的同一天完成的屏幕截图问题)。我的意思是我使用snap 设置了 Visual Studio Code,所以它可能在那之前的几个小时已经在后台更新了。

                                希望他们能修复它,并且 git 远程操作会再次正常。

                                【讨论】:

                                • 遇到同样的问题,在 ubuntu 20.04 上使用 VScode。您是否找到了使集成终端正常工作的解决方案? (我正在使用 bash)
                                • 谢谢,同样的问题。幸运的是我马上就找到了你的帖子
                                【解决方案27】:

                                我在尝试推送到 github 远程时遇到错误

                                git@github.com: Permission denied (publickey).
                                fatal: Could not read from remote repository.
                                
                                Please make sure you have the correct access rights
                                and the repository exists.
                                

                                解决方案 github 帐户上缺少 SSH 密钥

                                1. ~/.ssh 目录复制本地公共ssh 密钥

                                2. 粘贴到Github > Settings > SSH and GPG Keys > New SSH Key

                                3. 试试ssh -T git@github.com 这应该输出

                                  嗨,xxxx!你已经成功认证了,但是 GitHub 没有提供 shell 访问。

                                【讨论】:

                                • 选项-Tssh 中有什么作用?为什么这里没有列出ssh.com/academy/ssh/command#ssh-command-line-options
                                • -T 选项将在通过 SSH 连接到 Git 远程服务器时禁用伪终端分配。 Git 服务器将响应带有 -T 选项的 SSH 请求。
                                【解决方案28】:

                                给出的解决方案:使用个人访问令牌是绕过此问题的一种方法。我没有启用双重身份验证,但每当我登录新电脑时,我都会收到电子邮件验证码来验证电脑。

                                解决方案: 您可以在浏览器上登录 GitHub 并验证您的身份,这将使 GitHub 知道信任该 PC。之后,使用 bash 登录,这一次您的登录应该可以正常工作,因为现在您已被列入白名单。


                                注意:如果您有任何现有的 GitHub 帐户并想切换,则将其删除在 Credentials Manager > Windows Credentials (Generic Credentials Section)。这样做将允许您在进行另一个 git 操作时登录。

                                【讨论】:

                                  【解决方案29】:

                                  我刚刚为我的 Github 帐户启用了双重身份验证,因此我禁用了双重身份验证,并且能够使用我的 UID 和 PWD 登录

                                  【讨论】:

                                    【解决方案30】:

                                    同样的错误(Windows、Git Bash 命令行)。使用 https 会提示输入登录凭据,但会出现错误:

                                    $ git pull origin master
                                    fatal: Authentication failed for 'https://github.com/frmbelz/my_git_project.git'
                                    
                                    $ git config -l
                                    ...
                                    credential.helper=manager
                                    ...
                                    
                                    $ git config --global --unset credential.helper
                                    $ git config --system --unset credential.helper
                                    

                                    git pull 现在提示输入用户名/密码。

                                    【讨论】:

                                      猜你喜欢
                                      • 2016-04-09
                                      • 2015-03-13
                                      • 2021-01-10
                                      • 2019-12-21
                                      • 1970-01-01
                                      • 2014-08-24
                                      • 2018-11-05
                                      • 2016-09-29
                                      • 2017-08-16
                                      相关资源
                                      最近更新 更多