Git推送导致“身份验证失败”


704

我已经使用Github了一段时间,我对,和一直很好git add,到目前为止没有任何问题。突然我出现一个错误,提示:git 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的内容是什么?
mnagel

将其添加到问题中,评论不能处理长文本
mnagel

是的,抱歉,我出于习惯开始评论,然后更改了它。
zkirkland

您的网址看起来不正确。我认为应该从而https://不是开始http://
John Szakmeister

更改为https ...无效。
zkirkland

Answers:


1200

如果您在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  

5
确实。+1。我在这里介绍了PAT的stackoverflow.com/a/19223896/6309,并在那里详细介绍了过程:stackoverflow.com/a/18607931/6309
VonC 2014年

3
在启用2FA之后,我需要重新生成rsa密钥以使正常的Git操作正常工作。
R11G

5
谢谢!指出这一错误,并对此有所帮助。创建个人访问令牌后,您就可以复制该令牌,然后在推送回购协议时,它将要求您提供用户名和密码。将访问令牌粘贴到密码中
pourmesomecode 2015年

87
您还git remote add origin https://username:access-token@github.com/username/repo.git可以存储您的个人访问令牌。
mailmindlin

2
对我来说,我要做的就是从我的GitHub帐户上的本地计算机启用SSH身份验证,然后切换到ssh git远程地址;help.github.com/articles/changing-a-remote-s-url
user5359531 2015年

600

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

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

在此处输入图片说明


2
就我而言,它不在“ Windows凭据”中,而是在“通用凭据”中。删除凭据就可以了。
Toni Gamez

8
您可以通过(windows + R)->“ control / name Microsoft.CredentialManager”
Sufiyan Ansari '18

凭据可能在那里,但前面没有'git:'。那是行不通的。它需要以“ git:”开头
-Marques

1
我的雇主将Windows身份验证设置为Git Hub,因此,每次更改Windows凭据时,都必须对其进行更新以进行源代码控制。您的答案有效。
shary.sharath

1
很棒的答案。我们维护一个内部BitBucket存储库,我们的每个帐户凭据都已向我们的组织进行身份验证。最近,我所有的存储库都无法用于推送代码更改。虽然我可以逐个案例地更改凭据,但我确实不想在每个项目中都这样做。@Pradeep的方法使我得以解决了根本原因,这不仅仅是密码更改。我们的组织最近更改了内部域的名称,因此,通过集中编辑凭据,我可以修复我的所有项目。
Michael M

79

这对我有用,并且还记住了我的凭据:

  1. 运行gitbash

  2. 指向仓库目录

  3. git config --global credential.helper wincred


18
花了我一段时间才能找到答案-它使用Windows控制面板中的凭据管理器。要停止使用它:git config –global credential.helper unset 来源,以及此答案中的更多详细信息。
伊恩W

7
@IanW是git config --global --unset credential.helper什么意思?这就是Git Bash对我有用的东西。
Ellen Spertus

1
请谨慎使用此命令,它将用简单的“ wincred”代替您的凭据帮助程序的实际路径,而这显然不是您所需要的。
amarax

2
我运行此命令以查找不是我想要的,取消设置的正确方法是git config --global --unset credential.helper。最终,我使用恢复了正确的设置git config credential.helper store
奥马尔

这对我有帮助!谢谢!
杰萨玛(Jefsama)'18

69

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

git push -u origin branch_name_that_you_want_to_push

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

希望对您有帮助


这项工作https仅在我的环境中需要
BMW

1
当然,比大多数答案要容易得多。(更改密码应该是导致身份验证错误的最常见原因;
Michel's

如果您遇到这种在现有的克隆-然后就做了git push -u
阿贾伊谢比

64

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

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

然后,如果它以前运行过,并且没有在询问您的用户名,则一定是因为您已将凭据(登录名/密码)存储在$HOME/.netrc文件中,如此处所述。您可以仔细检查这些设置,并确保您的代理(如果有)没有更改。

如果仍然不起作用,则可以切换到ssh网址:

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

但这意味着您已经在“ 帐户”设置中发布了ssh公钥。


9
从HTTPS切换到SSH为我解决了这个问题。
leymannx

3
我已经为我的GH帐户启用了2因素身份验证,并且将远程URL从HTTPS切换到SSH为我解决了“身份验证失败”问题。说得通。谢谢!
Walter Roman

55

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

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


4
在使用GitLab时(这几乎没有其他帮助),这为我节省了时间。谢谢!
约翰·汉弗莱斯

2
我从未听说过此Windows凭据管理器。...谢谢!
山姆

1
当Git在将新文件推送到远程存储库时提示我输入用户名和密码时,我给了错误的凭据。当我再次运行push命令时,git并未提示我输入凭据,而是仅引发身份验证失败错误。读完此答案后,我意识到git使用存储在凭据管理器中的凭据,这应该是git每次我们推送到远程存储库时都不提示输入密码的原因。我在凭证管理器中删除了git密码,之后git再次提示我输入用户ID和密码。
Jchenna

41

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

以下2条命令对我有帮助:

git config --global --unset credential.helper

git config credential.helper store

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

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

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

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


在我更改了Github上的密码并且未在本地更改我的凭据之后,这对我有用。
斯科特

33

如果您在输入正确的密码和用户名时发现身份验证错误问题,那就是git问题。要在计算机上安装git时解决此问题,请取消选中启用git凭据管理器在此处输入图片说明


1
这解决了我的问题
user1929819

固定我的。太感谢了!
布赖恩·爱德华兹

我找不到这种解决方案。我已经重新安装了git
Hoque MD Zahidul

修复了我的麻烦(安装了git,然后取消选中就重新安装了它:没关系!)
manatlan

1
我也不得不检查“使用本地Windows安全通道库”。默认情况下未选中它。
doptrois

25

我认为出于某些原因,GitHub期望URL不具有子域www。当我使用时(例如)

git remote set-url origin https://www.github.com/name/repo.git

它给出以下消息:

remote: Anonymous access to name/repo.git denied
fatal: Authentication failed for https://www.github.com/name/repo.git

但是,如果我使用

git remote set-url origin https://github.com/name/repo.git

它工作得很好。对我来说并没有太大的意义...但是我想请记住不要将www放在GitHub存储库的远程URL中。

还要注意,GitHub存储库网页上提供的克隆URL不包含www。


4
不将“ www”放在“ github.com”上有效。既然如此,Github应该修复他们的网站,这样您就无法使用“ www”进行克隆。
约翰·纳格勒

1
谢谢:)我的URL缺少.git,而此注释使我得以查看并弄清楚。

19

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

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

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

10

我的Windows密码过期并被更改后,我遇到了“ $ git fetch致命:'http:// ....身份验证失败”的问题。使用Windows凭据管理器进行多次获取,重新启动甚至重新安装git都无济于事。

出人意料的是,这里的正确答案在注释中某处,但不在答案中(其中有些确实很奇怪!)。您需要转到控制面板->凭据管理器/ Windows凭据,并更新git的密码:http:// yourrepoaddress


9

我不确定要如何解决此错误,但可以这样做:

git remote set-url origin https://...

没有为我工作。然而:

git remote set-url origin git@bitbucket.org:user/repo

以某种方式工作。


3
您从https切换为ssh
James Wierzba 2015年

它也对我有效。这不是魔术,这是因为我已经存储了用于ssh访问的配置(配置了公共密钥),而没有为https访问(用户/密码+ MFA)选择配置。
丹尼尔·杜波夫斯基

8

我有同样的问题。我以这种方式设置网址:

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

我还从配置文件中删除了该条目:askpass = /bin/echo。然后“ git push”要求我提供用户名和密码,这一次它起作用了。


我不需要从配置文件中删除以下条目:askpass = /bin/echo
Darius Miliauskas

5

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




2

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

小心只能使用INTERNET EXPLORER!其他浏览器不会更改您的系统凭据。

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

git config user.name "domainName\userName"

完成,现在您可以推动了!


1

对我来说,我忘记了在Github.com上更改了密码,而我用于外壳验证的钥匙串从未更新为该新密码。从我的钥匙串中删除所有git,然后重新运行git请求有助于解决此问题,再次提示我输入新密码。


1

只是想提醒一下,为我解决了这个问题的是,我只是从初始提示中取消了,用我的bitbucket帐户打开了一个ssh,然后在其中输入密码,一切正常。


1

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


1

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

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

 rundll32.exe keymgr.dll, KRShowKeyMgr

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


0

我也遇到了错误(这就是为什么我落在这里的原因),但是没有任何建议对我有用。这是我第一次尝试将本地Git部署到Azure。遇到此错误时,经过几次尝试,我重置了凭据(通过单击Azure中的链接)。问题在于,此时它告诉我我的用户名已被使用,因此我也将我的用户名更改为另一个。最后,我手动删除了本地驱动器上的.git文件夹,并毫无问题地重新部署了它。


0

问题陈述: “ git致命认证失败”。我正在使用bitbucket。

解决方案: 我只是从使用bitbucket的访问管理中删除了该用户,然后添加了该用户。.gitconfig文件很简单

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

[push]
    default = simple

0

如果问题仍然存在,请提供正确的凭据

如果您使用的是androidstudio 2.1 beta,则是其bug,升级到beta 2(3 mb更新文件),这对我有用



0

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

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

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

我正在使用安装了Openssh的Windows Powershell。


0

在Android Studio Canary build 3.1+中,如果您使用的是Android Studio git工具,则可以使用以下命令:

  • 点击Android Studio
  • 单击首选项...
  • 在VersionControl中转到-> Github
  • 此处将身份验证类型更改为密码
  • 此步骤将要求您输入登录名和密码。输入您的github用户名作为登录名,并输入github密码作为密码。
  • 单击测试按钮。

如果连接成功,则说明您已经完成,可以使用android studio github UI客户端。


0

如果您使用的是ssh并使用https克隆,则将无法使用。用ssh克隆,然后推和拉应该可以正常工作!


0

如果这对切线有帮助,因为此问题现在是git的HTTP身份验证问题的重中之重:Windows Credential Manager已正确存储了我的密码,并且由于我使用的是Git LFS,所以我配置了http URL而不是通常的ssh:/ /

我的问题是我的公司密码策略强制更改帐户密码,但我从未更新过存储的凭据(因为我始终使用ssh密钥)。

只需直接在Wincred GUI中更新密码即可:仅查找一个git:https://<your-url>条目。


0

在从Gitlab登录之前强制执行“双重身份验证”后,这发生在我们身上。我们必须将id_rsa.pub中的文本粘贴到Gitlab,然后使用终端以VS代码重新引入存储库。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.