Git推送导致"身份验证失败"

zki*_*and 583 git authentication github

我一直在使用Github上一小会儿,我一直罚款git add,git commit以及git 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 = ############
Run Code Online (Sandbox Code Playgroud)

rc0*_*c0r 1046

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

https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/

如果设置为https,您可能还需要更新存储库的源:

git remote -v 
git remote remove origin 
git remote add origin git@github.com:user/repo.git  
Run Code Online (Sandbox Code Playgroud)

  • 您还可以执行`git remote add origin https:// username:access-token @ github.com/username/repo.git`来存储您的个人访问令牌. (72认同)
  • 确实.+1.我在这里介绍PAT http://stackoverflow.com/a/19223896/6309并详细介绍了该过程:http://stackoverflow.com/a/18607931/6309 (5认同)
  • 对我来说,我所要做的就是在我的 GitHub 帐户上从我的本地机器启用 SSH 身份验证,然后切换到 ssh git 远程地址;https://help.github.com/articles/changed-a-remote-s-url/ (5认同)
  • 谢谢!只是指出了这个错误,这有帮助.一旦你创建了你的个人访问令牌,你就可以复制它,然后当你推动回购时,它会询问你的用户名和密码.将访问令牌粘贴到密码中 (4认同)
  • 在启用2FA之后,我需要重新生成rsa密钥以使正常的Git操作正常工作。 (2认同)

Pra*_*eep 452

请尝试以下步骤来编辑或删除已保存的凭据:

  1. 单击开始
  2. 键入:凭据管理器(在Windows 10上,这是在"开始 - >设置"下.然后搜索"凭据管理器")
  3. 查看Windows Credentials Manager快捷方式,然后双击它以打开该应用程序.
  4. 应用程序打开后,单击Windows Credentials选项卡.
  5. 找到要删除/更新的凭据,它们将以"git:"开头,并可能以"ada:"开头
  6. 单击凭证条目,将打开条目的详细信息视图.
  7. 根据需要单击编辑或删除并确认.
  8. 洗涤,冲洗,必要时重复.

在此输入图像描述

  • 您可以通过(windows + R) - >"control/name Microsoft.CredentialManager"打开上面的窗口 (4认同)
  • 很棒的答案。我们维护一个内部 BitBucket 存储库,其中我们的每个帐户凭据都经过我们组织的身份验证。最近,我的所有存储库都无法用于推送代码更改。虽然我能够根据具体情况更改凭据,但我真的不想为每个项目都这样做。@Pradeep 的方法让我解决了根本原因,这不仅仅是简单的密码更改。我们的组织最近更改了内部域的名称,因此通过集中编辑凭据,我能够修复我的所有项目。 (3认同)
  • 就我而言,它不在“ Windows凭据”中,而是在“通用凭据”中。删除凭据就可以了。 (2认同)
  • 我的雇主将 Windows 身份验证设置为 Git Hub,因此每次我更改 Windows 凭据时,我都必须更新它以进行源代码管理。你的回答有效。 (2认同)
  • 这应该是选定的答案。 (2认同)

小智 64

这对我有用,它还记得我的证书:

  1. 运行gitbash

  2. 指向repo目录

  3. git config --global credential.helper wincred

  • 花了一些时间来了解它的作用 - 它使用Windows控制面板中的Credential Manager.要停止使用它:`git config -global credential.helper unset` [来源](http://www.codewrecks.com/blog/index.php/2015/06/23/git-for-windows-getting-invalid -username-or-password-with-wincred /),以及[此答案]中的更多详细信息(http://stackoverflow.com/questions/15381198/remove-credentials-from-git). (14认同)
  • @IanW你的意思是`git config --global --unset credential.helper`?这对Git Bash来说非常有用. (6认同)
  • 我运行这个命令发现它不是我想要的,正确的取消设置方法是`git config --global --unset credential.helper`。最终,我使用 `git config credential.helper store` 恢复了我的正确设置。 (4认同)
  • 小心使用这个命令,它会用简单的“wincred”替换你的凭证助手的真实路径,这显然不是你需要的。 (3认同)

Von*_*onC 57

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

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git
Run Code Online (Sandbox Code Playgroud)

然后,如果它之前正在工作,并且它没有要求您使用用户名,那一定是因为您已将凭据(登录/密码)存储在$HOME/.netrc文件中,如此处所述.您可以仔细检查这些设置,并确保您的代理(如果有的话)没有更改.

如果仍然无效,您可以切换到ssh网址:

git remote set-url origin git@github.com:zkirkland/Random-Python-Tests.git
Run Code Online (Sandbox Code Playgroud)

但这意味着您已在帐户设置中发布了ssh公钥.

  • 从HTTPS切换到SSH解决了我的问题. (7认同)
  • 我已经为我的GH帐户启用了2因素身份验证,并且从HTTPS切换到远程URL到SSH解决了"身份验证失败"问题.说得通.谢谢! (3认同)

小智 54

您最近是否为git帐户更改了密码您可以尝试使用git pushwith -u选项

git push -u origin branch_name_that_you_want_to_push
Run Code Online (Sandbox Code Playgroud)

执行上述命令后,它会要求输入密码提供密码

希望它可以帮到你

  • 当然比大多数答案容易得多。(并且更改密码应该是出现身份验证错误的最常见原因;-)) (6认同)
  • 如果您在现有克隆上遇到此问题 - 那么只需执行“git push -u” (2认同)

小智 35

基本上我的凭证已过期,我面临上述问题.

以下2命令帮助我:

git config --global --unset credential.helper

git config credential.helper store
Run Code Online (Sandbox Code Playgroud)

当您尝试推送时,它会在下次询问您的凭据.

有关用户名和密码的安全和不安全存储的更多详细信息,请遵循以下准则:

https://git-scm.com/docs/git-credential-store

https://git-scm.com/docs/git-credential-cache

  • 密码过期后,这在 Mac 上效果很好。 (2认同)

Hoq*_*dul 32

如果您在输入正确的密码和用户名时发现身份验证错误问题,那就是git问题.要在计算机中安装git时解决此问题,请取消选中enable git credential manager在此输入图像描述

  • 我还必须选中“使用本机 Windows 安全通道库”。默认情况下不检查它。 (2认同)

Ele*_*cto 25

我认为由于某种原因,GitHub期望URL不具有子域名www.当我使用(例如)

git remote set-url origin https://www.github.com/name/repo.git
Run Code Online (Sandbox Code Playgroud)

它给出了以下消息:

remote: Anonymous access to name/repo.git denied
fatal: Authentication failed for https://www.github.com/name/repo.git
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用

git remote set-url origin https://github.com/name/repo.git
Run Code Online (Sandbox Code Playgroud)

它工作得很好.对我来说没有多大意义......但我想记得不要把www放在GitHub存储库的远程URL中.

另请注意,GitHub存储库网页上提供的克隆URL不包含www.

  • 不在"github.com"上放"www".因为这很重要,Github应该修复他们的网站,这样你就无法使用"www"进行克隆. (4认同)

frm*_*elz 17

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

$ git pull origin master
fatal: Authentication failed for 'https://github.com/frmbelz/my_git_project.git'
Run Code Online (Sandbox Code Playgroud)
$ git config -l
...
credential.helper=manager
...

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

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


Cha*_*Zoo 16

嗨,我遇到了同样的错误,我尝试了本页中提到的所有解决方案,但是没有用。最后,我找到了解决方案,于是想到了发布它。如果我在任何地方都不对,请纠正我。如果有时您的系统密码最近随时更改,则会出现此类错误。它将尝试从旧密码进行验证。因此,请按照下列步骤操作:

  1. 转到控制面板
  2. 点击用户帐户
  3. 副证书管理器
  4. 转到管理Windows凭据
  5. 转到通用凭证
  6. 展开git服务器选项卡
  7. 单击从库中删除

    • 您也可以单击“编辑”并直接更改此处存储的密码。


Ati*_*Asi 13

如果您更改git服务帐户(Git)的登录名或密码,则会发生这种情况。您还需要在Windows Credentials Manager中进行更改。在Windows搜索菜单中键入“凭据管理器”,将其打开。

Windows凭据管理器-> Windows凭据,然后在常规凭据下编辑您的git密码。

  • 当我使用 GitLab 时,这拯救了我(当时几乎没有其他帮助)。谢谢! (10认同)
  • 我从来没有听说过这个 Windows 凭据管理器...谢谢! (4认同)
  • 奇迹般有效。谢谢您的帮助。 (2认同)
  • IMO 最简单、最快的修复。 (2认同)

Wil*_*ies 11

我添加到与 Git 链接的 Bitbucket 并且不得不删除存储的密钥,因为这导致了致命错误。

要解决,我打开命令提示符并运行

 rundll32.exe keymgr.dll, KRShowKeyMgr
Run Code Online (Sandbox Code Playgroud)

我删除了负责登录的密钥,下次将文件推送到存储库时,系统提示我输入凭据并输入正确的凭据,从而成功推送。


小智 11

在你尝试以上所有方法之前,再试git push一次,是的,它对我有用。


ama*_*rax 10

在Windows密码过期并更改后,我遇到了"$ git fetch fatal:'http:// ....'身份验证失败.使用Windows凭据管理器进行多次提取,重新启动甚至重新安装git都无济于事.

令人惊讶的是,正确的答案在这里的评论中,而不是在答案中(其中一些非常奇怪!).您需要转到控制面板 - >凭据管理器/ Windows凭据并更新git的密码:http:// yourrepoaddress


小智 10

就我而言,我最近更改了 Windows 密码,并且为 git 相关操作(拉、推、取等)配置了 SSH 密钥,在遇到“致命:身份验证失败”错误后,我在 Windows 中更新了密码凭据管理器(控制面板\用户帐户\凭据管理器)适用于以 git:... 开头的所有项目,并再次尝试,这次成功了!


Kaf*_*ait 8

我不确定我做了什么来得到这个错误,但做的是:

git remote set-url origin https://...
Run Code Online (Sandbox Code Playgroud)

不适合我.然而:

git remote set-url origin git@bitbucket.org:user/repo
Run Code Online (Sandbox Code Playgroud)

不知何故工作.

  • 您从https切换到ssh (3认同)

小智 6

我有同样的问题.我以这种方式设置url:

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

我也从配置文件中删除了这个条目:askpass = /bin/echo.然后"git push"问我用户名和密码,这次它有效.


Reg*_*Boy 5

如果您在 Github 帐户上启用了双因素身份验证,请登录您的 GitHub 帐户并转到:https : //github.com/settings/tokens/new 以生成新的访问令牌,复制该令牌并粘贴为用于终端身份验证的密码。