【问题标题】:GitHub: invalid username or passwordGitHub:用户名或密码无效
【发布时间】:2015-05-31 13:44:53
【问题描述】:

我有一个项目托管在 GitHub 上。尝试将我的修改推送到主服务器时失败。我总是收到以下错误消息

Password for 'https://git@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://git@github.com/eurydyce/MDANSE.git/'

但是,将我的 ssh 密钥设置为 github 似乎没问题。确实,当我执行ssh -T git@github.com 时,我得到了

Hi eurydyce! You've successfully authenticated, but GitHub does not provide shell access.

这似乎表明从那一侧一切正常(eurydyce 是我的 github 用户名)。我严格遵循 github 上给出的说明和许多堆栈讨论的建议,但没有办法。你知道我做错了什么吗?

【问题讨论】:

  • 我不确定我是否应该发布答案(很有可能被否决),因为我在尝试了多次“正确”尝试后通过更改 github 设置中的密码解决了这个错误消息(通过检查元素检查)密码。
  • 一些组织启用了 SAML SSO。在这种情况下,最好使用个人访问令牌。如果您已经登录,请重新登录并授予 Github Desktop/Sourcetree 权限

标签: github


【解决方案1】:

启用两因素身份验证 (2FA) 后,您在尝试使用 git clonegit fetchgit pullgit push 时可能会看到类似的内容:

$ git push origin master
Username for 'https://github.com': your_user_name
Password for 'https://your_user_name@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/your_user_name/repo_name.git/'

为什么会这样

来自GitHub Help documentation

启用 2FA 后,您需要输入个人访问令牌,而不是 2FA 代码和您的 GitHub 密码。

...

例如,当您使用带有 HTTPS URL 的 git clonegit fetchgit pullgit push 等命令在命令行上使用 Git 访问存储库时,您必须提供您的 GitHub 用户名和您的个人访问令牌当提示输入用户名和密码时。命令行提示在询问您的密码时不会指定您应该输入您的个人访问令牌。

如何解决

  1. 生成Personal Access Token。 (Creating a personal access token for the command line 上的详细指南。)
  2. 复制个人访问令牌。
  3. 重新尝试您尝试的命令并使用个人访问令牌代替您的密码。

相关问题: https://stackoverflow.com/a/21374369/101662

【讨论】:

  • 工藤的和赞成票;新的代币是我所需要的。还; “复制代码”包含其他(无效)字符,因此我必须手动输入我的 .... 20[?] 位随机密钥。
  • 这是我的问题,在添加了我怀疑的 2 因子身份验证之后,但是缺少关于此的文档。感谢您的回答!
  • @BeauSmith:这比我们通常允许的编辑方式更具实质性。你基本上完全重写了这个答案。请将其发布为您自己的单独答案。另见What do you do if someone basically re-writes your whole answer?
  • 让我们都请允许由@Oliver 决定是否回滚 - 无论哪种方式都有一个非常合理的论点
  • 这里是编辑器......因为似乎人们将此答案标记为正确(如我自己)到达此页面是因为问题与提问者的预期略有不同,所以我试图添加一些“谷歌果汁" 术语并使答案更具视觉吸引力,以便寻求此解决方案的其他人可以找到它。努力让社区变得更好。 ?
【解决方案2】:

https://git@github.com/eurydyce/MDANSE.git 不是 ssh 网址,它是 https 网址(需要您的 GitHub 帐户名,而不是“git”)。

尝试使用ssh://git@github.com:eurydyce/MDANSE.git 或只使用git@github.com:eurydyce/MDANSE.git

git remote set-url origin git@github.com:eurydyce/MDANSE.git

OP Pellegrini Eric 补充道:

这就是我在我的 ~/.gitconfig 文件中所做的,该文件当前包含以下条目 [remote "origin"] url=git@github.com:eurydyce/MDANSE.git

这不应该在您的全局配置中(~/ 中的那个)。
您可以在您的 repo 中检查 git config -l:该 url 应该在 local 配置中声明:<yourrepo>/.git/config

因此,在执行git remote set-url 命令时,请确保您位于 repo 路径中。


Oliveranswer 中所述,如果激活了two-factor authentication (2FA),HTTPS URL 将不会使用用户名/密码。

在这种情况下,密码应该是PAT (personal access token),如“Using a token on the command line”所示。

这仅适用于 HTTPS URL,SSH 不受此限制的影响。

【讨论】:

  • 哎呀!你是对的,在我的本地配置中进行这些更改使一切正常。非常感谢。
  • 完全看不懂这个答案
  • @Clo 当然,哪个部分不够清晰,我该如何改进这个答案?
  • 当我这样做(用我的替换用户名和仓库名称)时,我得到“权限被拒绝(公钥)”。如果可能,我想使用用户名和密码登录。
  • @byronaltice 如果这是 SSH,则意味着您有一个 ~/.ssh/config%USERPROFILE%\.ssh\config 文件,其中包含一个 github.com 条目。
【解决方案3】:

解决步骤:

  1. 控制面板
  2. 凭据管理器
  3. 单击 Windows 凭据
  4. 在通用凭证部分,会有git url,更新用户名和密码
  5. 重启 Git Bash 并尝试克隆

【讨论】:

  • 我在公司版本的 github 上遇到了这个问题(所以使用本地用户名/密码)。这个解决方案修复了它。
  • 在新窗口中,您可以使用您的语言搜索“Windows 凭据”或类似内容。它会弹出一个结果,你可以试试这个解决方案。
  • 本地 github 的完美解决方案,公司要求您使用 https
  • 我正在关注另一个线程来刷新凭据,但没有运气。您的解决方案完美运行
  • 同样的问题:git@github.com:权限被拒绝(公钥)。致命:无法从远程存储库中读取。请确保您拥有正确的访问权限并且存储库存在。
【解决方案4】:

如果您像我一样刚刚更新密码并运行git push 来遇到此问题,那么有一个超级简单的解决方法。

仅适用于 Mac 用户。您需要删除 GitHub 的 OSX 钥匙串访问条目。您可以通过终端运行以下命令来完成。

通过命令行删除您的凭据

通过命令行,您可以直接使用凭证助手来擦除钥匙串条目。

为此,请键入以下命令:

git credential-osxkeychain erase
host=github.com
protocol=https

# [Now Press Return]

如果成功,则不会打印任何内容。要测试它是否有效,请尝试从 GitHub 克隆存储库或再次运行您之前的操作,例如我的情况 git push。如果系统提示您输入密码,则表示钥匙串条目已被删除。

【讨论】:

  • 对于windows:git credential-wincred erase host=github.com protocol=https
  • 我在 BitBucket 存储库中遇到了这个问题。这个答案用host=bitbucket.org 而不是 GitHub 为我修复了它。
  • 我更改了我的 Github 密码,之后 git pull 对我不起作用。这对我有用。
  • 这是正确的答案,以防有人在最后一次 Github 身份验证更新后卡住以强制使用用户名/令牌而不是用户名/密码登录。
【解决方案5】:

当使用https:// URL 连接到您的远程存储库时,Git 将不会使用 SSH 作为身份验证,而是会尝试通过 HTTPS 进行基本身份验证。通常,您只会使用不带用户名的 URL,例如https://github.com/username/repository.git,然后 Git 会提示您输入用户名(您的 GitHub 用户名)和密码。

如果您使用https://something@github.com/username/repository.git,那么您已经预设了 Git 将用于身份验证的用户名:something。由于您使用了https://git@github.com,Git 将尝试使用您的密码当然不起作用的git 用户名登录。因此,您将不得不使用 您的 用户名。

替代方案实际上是使用 SSH 进行身份验证。这样您就不必一直输入密码;既然它似乎已经工作了,那就是你应该使用的。

为此,您需要更改远程 URL,以便 Git 知道它需要通过 SSH 连接。格式为:git@github.com:username/repository。要更新您的 URL,请使用以下命令:

git remote set-url origin git@github.com:username/repository

【讨论】:

  • 在尝试您的命令时,我收到以下消息 warning: remote.origin.url has multiple values。这可能是因为我的 ~/.gitconfig 文件中已经有一个远程标记,其中包含值 [remote "origin"] url=git@github.com:eurydyce/MDANSE.git
  • 我已经搜索了好几个小时,为什么我无法推送我的更改,这个答案终于给出了一个完美的解释并帮助我解决了这个问题,谢谢!
【解决方案6】:

2FA 已启用并收到错误远程:无效的用户名或密码。 致命:身份验证失败

如果您在 GitHub 中设置了 2FA,则需要输入个人访问令牌,而不是 2FA 代码和您的 GitHub 密码。

如何解决

  1. https://github.com/settings/tokens生成令牌
  2. 复制个人访问令牌
  3. 现在在 git 操作期间输入个人访问令牌代替密码

【讨论】:

  • 就是这样!你能解释一下这里发生了什么吗?从现在开始,我是否需要令牌用于任何与 Github 相关的用途?
  • 在此之后,然后按照@Anil_Reddy的回答。
【解决方案7】:

除了git pull,也可以试试git pull origin master

我修改了密码,第一条命令报错:

$ git pull
remote: Invalid username or password.
fatal: Authentication failed for ...

git pull origin master之后,它要求输入密码并且似乎在更新自己

【讨论】:

  • 这就是我需要的!
  • 这是最简单的方法,而且很有效!
【解决方案8】:

只需尝试再次将其推送到您的分支。这将再次询问您的用户名和密码,因此您可以输入更改后的密码。这样您的新密码就会再次存储在缓存中。

【讨论】:

  • 不知道为什么这会被否决。在我的情况下,我的凭据已更新,第二个 git push 提示进行适当的更新,正如这个答案所示。
  • 不确定,你的意思是,它不是要求新的凭据执行git push origin master...
  • 不错!如果您尝试git clone 某些东西,但它告诉您您的用户名/密码不正确,同样的事情。如果最近发生了变化,只需再次运行git clone <myprojecturl>,这一次它会要求您重新输入用户名和密码。
【解决方案9】:

这个问题有时是由于密码错误而发生的。请检查您是否与 AD 密码(Active Directory 密码)关联,并且您最近更改了 AD 密码,但仍在尝试使用旧密码的 git 命令。

更新旧的 AD 密码

Control Panel > Credential Manager > Windows Credential > change github password with my new AD password

【讨论】:

    【解决方案10】:

    我做到了:

    $git pull origin master
    

    然后它要求输入 [用户名] 和 [密码],现在似乎工作正常。

    【讨论】:

    • 这对我有用。我用 fetch 代替了 pull 但无论如何都没关系。酷!
    • 从 2021 年 8 月 13 日开始,这将不再支持
    • 随意编辑和添加有效的@ZEHINZ!有一段时间没有遇到这个问题了,所以我什至不确定更新的命令是什么!
    【解决方案11】:

    无需依赖生成个人访问令牌,然后尝试使用个人访问令牌代替您的密码。

    快速解决方法是将您的远程 URL 设置为指向 ssh 而不是 https

    这样做git remote set-url origin git@github.com:username/repository

    【讨论】:

      【解决方案12】:

      我在从 bitbucket 克隆应用程序时得到这个:

      Cloning into 'YourAppName'...
      Password for 'https://youruser id': 
      remote: Invalid username or password
      

      我解决了。在这里您需要为您的用户名创建密码

      1. 单击您的个人资料和设置

      2. 然后创建应用程序密码选择您的名称密码将生成,将该密码粘贴到终端

      【讨论】:

        【解决方案13】:

        我已经使用以下命令成功了。

        git config --unset-all credential.helper
        git config --global --unset-all credential.helper
        git config --system --unset-all credential.helper
        

        尝试让我知道这些是否对您有用。

        【讨论】:

        • 在此之后,在您拥有的任何 repo 中执行 git push origin master 应该再次提示您输入您的用户名(与以前相同)和密码(在此处使用个人访问令牌)。
        【解决方案14】:

        试试这个:

        # git remote set-url origin git@github.com:username/repository
        

        【讨论】:

          【解决方案15】:

          如果您刚刚启用了 2FA:

          修改./git隐藏文件夹中隐藏的config文件如下:

          [remote "origin"]
              url = https://username:PUT_YOUR_2FA_TOKEN_HERE@github.com/project/project.git
          

          【讨论】:

          • 但是如果文件夹还不存在怎么办?我什至无法在 github 中执行 git clone 的私人回购
          • 谢谢。我在这个问题上花了两个多小时。你的回答拯救了我的一天
          【解决方案16】:

          在 github 上禁用 2 因素身份验证对我有用。

          我看到有一个已删除的答案说明了这一点,删除原因为“不回答问题”。如果它有效,那么我认为它回答了这个问题......

          【讨论】:

          • 这很奇怪。我也发生了同样的事情。我刚刚禁用了双因素身份验证,它现在对我有用。 :)
          【解决方案17】:

          运行下面的命令,然后在每次推拉之后它会要求你输入用户名和密码。

            git config credential.helper ""
          

          现在,当您拉/推时,系统会要求您提供 git 凭据。天气你正在通过命令提示符或 Intellij Git 运行。

          【讨论】:

            【解决方案18】:

            您可能会收到此错误,因为您已更新密码。因此,在终端上,首先确保您从钥匙串中清除您的 GitHub 凭据,然后将您的更改推送到您的存储库,终端将询问您的用户名和密码。

            【讨论】:

              【解决方案19】:

              如果您在这种情况下收到此错误消息:

              • 使用 github 做企业
              • 在 git config 中使用 credential.helper=wincred
              • 使用您最近更改Windows 凭据

              然后看看这个答案: https://stackoverflow.com/a/39608906/521257

              Windows 将凭据存储在凭据管理器中,将其清除或更新。

              【讨论】:

                【解决方案20】:
                1. 控制面板
                2. 凭据管理器
                3. 查找选项 webcredentials 和 windows 凭据
                4. 在任何一个中,您都会发现 github 凭据使用正确的凭据修复它
                5. 打开新的 git bash 实例,您应该能够执行 git 命令。

                这对我有用,我能够拉入并推送到我的远程仓库。

                【讨论】:

                  【解决方案21】:

                  我有同样的问题。我通过在客户端应用程序的 repo 设置中将远程分支的路径从 https://github.com/YourName/RepoName 更改为 git@github.com:YourName/RepoName.git 解决了这个问题。

                  【讨论】:

                  • 您正在尝试使用 SSH 链接解决问题。我更喜欢使用 HTTPS,你的回答对我没有帮助。
                  【解决方案22】:

                  我经常遇到这个问题。 确保你设置了 git --config user.name "" 而不是你的真实姓名,我已经做过几次了..

                  【讨论】:

                    【解决方案23】:

                    我只是禁用双因素身份验证,然后重试。它对我有用。

                    【讨论】:

                      【解决方案24】:

                      由于您可能希望为您的帐户启用 2FA,因此您可以设置一个 ssh 密钥,这样您就无需在每次将工作推送到 Github 时都输入您的 Github 凭据。

                      您可以在documentation 中找到所有 ssh 设置步骤。首先,请确保您当前没有任何带有$ ls -al ~/.ssh 的 ssh 密钥(id_rsa.pub 等)

                      【讨论】:

                        【解决方案25】:

                        在 Windows 上使用 cmd-Greetings 时出现问题

                        在使用 cmd-Greetings 的 Windows 上存在一个问题,它不允许您克隆私有存储库。删除本文档中描述的 cmd-greeting(关键字 Command Processor):

                        Known-Issues

                        我可以确认 SourceTree、GitKraken、Tower 和 TortoiseGit 等其他客户端也受到了这个问题的影响。

                        【讨论】:

                          【解决方案26】:

                          最好和最简单的方法之一

                          1. 刚刚在 github 上禁用了两种身份验证
                          2. 转到控制面板--> windows 凭据--> 点击添加通用凭据

                          只需手动输入 添加Github地址:hhtps://www.github.com 用户名:您的用户名 密码:您的密码 然后保存到它

                          3)在使用 git push 命令时,你需要在 Github 上生成一个令牌,再次返回,在 Github > 设置> 开发人员设置> 生成令牌

                          希望这会有所帮助....

                          【讨论】:

                            【解决方案27】:

                            这个解决方案对我有用:

                            1. 打开控制面板
                            2. 转到凭据管理器
                            3. 单击窗口凭据
                            4. 在Generic Credential部分,会有git url,更新用户名和密码
                            5. 重启 Git Bash 并尝试克隆

                            【讨论】:

                            • 这个答案复制了一个没有用的现有答案。当您拥有足够的声誉(我相信是 15)时,您可以投票选出您认为有用的答案。投票将是正确的答案,而不是添加这个重复的答案。
                            猜你喜欢
                            • 1970-01-01
                            • 2016-08-22
                            • 2016-11-14
                            • 2018-01-19
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2022-08-19
                            • 2016-12-06
                            相关资源
                            最近更新 更多