ChatGPT解决这个技术问题 Extra ChatGPT

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

我使用 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 的内容是什么?
将其添加到问题中,评论不适用于长文本
是的,对不起,我出于习惯开始评论然后改变了它。
您的网址看起来不正确。我认为它应该以 https:// 开头,而不是 http://
@Amey 好点。这实际上来自我的回答:stackoverflow.com/a/62870126/6309

b
basZero

如果您在 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 操作。
谢谢!只是有这个错误,这有帮助,只是指出。一旦你创建了你的个人访问令牌,你复制它,然后当你推送 repo 时,它会询问你的用户名和密码。将访问令牌粘贴到密码中
您还可以执行 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
P
Peter Mortensen

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

单击开始类型:凭据管理器(在 Windows 10 上,位于“开始 → 设置”下。然后搜索“凭据管理器”)查看 Windows 凭据管理器快捷方式并双击它以打开应用程序。打开应用程序后,单击“Windows 凭据”选项卡。找到要删除/更新的凭据。它们将以“git:”开头,并且可能以“ada:”开头。单击凭证条目。它将打开条目的详细信息视图。根据需要单击编辑或删除并确认。起泡,冲洗,必要时重复。

https://i.stack.imgur.com/NejcV.png


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

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

git push -u origin branch_name_that_you_want_to_push

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


这行得通,我的环境只需要 https
当然比大多数答案容易得多。 (并且更改密码应该是导致身份验证错误的最常见原因;-))
如果您在现有克隆上遇到此问题 - 只需执行 git push -u
我从 Windows 凭据管理器中删除了我的凭据,这个命令触发了登录对话框。谢谢!
此解决方案不再有效:Git 将通知“对密码身份验证的支持已于 2021 年 8 月 13 日删除。请改用个人访问令牌。”并建议点击此链接:github.blog/…
A
Atif AbbAsi

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

Windows Credentials Manager->Windows Credential 并在 Generic Credentials 下编辑您的 git 密码。


这在使用 GitLab 时救了我(当时几乎没有其他帮助)。谢谢!
我从未听说过这个 Windows 凭据管理器......谢谢!
当 Git 在将新文件推送到远程存储库时提示我输入用户 ID 和密码时,我提供了错误的凭据。当我再次运行 push 命令时,git 没有提示我输入凭据,而是仅抛出身份验证失败错误。在阅读了这个答案后,我意识到 git 使用存储在凭证管理器中的凭证,这应该是每次我们推送到远程存储库时 git 都不会提示输入密码的原因。我在凭证管理器中删除了 git 密码,之后 git 再次提示我输入用户 ID 和密码。
您可以通过 (windows + R) -> "control /name Microsoft.CredentialManager" 打开上述窗口
最简单和最快的修复 IMO。
P
Peter Mortensen

在 Windows 上,这对我有用,它还记得我的凭据:

运行 Git Bash 指向存储库目录运行 git config --global credential.helper wincred


我花了一段时间才弄清楚它的作用——它使用 Windows 控制面板中的凭据管理器。要停止使用它:git config –global credential.helper unset Sourcethis 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
V
VonC

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

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

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

检查 git config --global credential.helper 的输出。
并确保凭据是您的 GitHub 用户帐户和 PAT (Personal Access token)

您可以update your credentials using the Git credential helper, as in 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 帐户中设置了一个公钥。
URL 不正确确实是我的问题,我错误地将 https:// 更改为 git://,而我需要 git@github.com:user.repo.git。奇怪的是git没有以某种方式报告问题,只是静默挂起
@AlexeyLarionov 由于 git:// 是一个有效的(尽管已经过时)协议,它只是尝试并使用它,等待远程服务器在端口 9418 上侦听。
P
Peter Mortensen

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

以下两个命令帮助了我:

git config --global --unset credential.helper

git config credential.helper store

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

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

git-credential-store

git-credential-cache


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

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

https://i.stack.imgur.com/V6yNw.png


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

我认为由于某种原因 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。


不在“github.com”上放置“www”有效。既然这很重要,Github 应该修复他们的网站,这样你就不能使用“www”进行克隆。
谢谢 :) 我的 url 缺少 .git,这个评论让我看了一下并弄清楚。
P
Peter Mortensen

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

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

转到控制面板单击凭据管理器下的用户帐户转到管理 Windows 凭据转到通用凭据展开 Git 服务器选项卡单击从保管库中删除

此外,您可以单击编辑并直接更改此处存储的密码。


这与用户 Sherlock 一年多前发布并在此答案发布前 3 分钟 删除的内容完全相同。
我在用户帐户下没有凭据管理器。我正在运行 Manjaro。
J
Justin Herrera

在您尝试上述所有操作之前,请再次尝试 git push,是的,它对我有用。


当您至少在我的情况下再次执行“git push”时,它会询问用户名和密码,输入您的凭据,您就可以开始了
你节省了我的时间!谢谢!这对我有用。
K
Kafeaulait

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

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

对我不起作用。然而:

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

不知何故奏效了。


你从 https 切换到 ssh
它也适用于我。这不是魔术,这是因为我存储了 ssh 访问配置(配置了公钥),而 https 访问(即用户/密码 + MFA)没有获取这些配置。
P
Peter Mortensen

我遇到过

git fetch

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

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

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

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


W
William Humphries

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

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

 rundll32.exe keymgr.dll, KRShowKeyMgr

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


完美的!这是一个快速而简短的解决方案,对我来说立即适用于 bitbucket。如果在编辑密码后此问题重复出现,请删除登录。执行拉或推之类的 git 操作时会提示 git 的新凭据。
f
frmbelz

同样的错误(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 现在提示输入用户名/密码提示。


我觉得不得不发表评论,因为我开始失去希望,这些答案都对我不起作用,但最后两个命令确保 git 要求我提供新凭据。谢谢你。
K
Kiran Modini

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


P
Peter Mortensen

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

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

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

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


我不需要从配置文件中删除此条目:askpass = /bin/echo
P
Peter Mortensen

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

New personal access token

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


P
Promise Preston

我昨天开始在 Ubuntu 20.04 的 Visual 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,所以它可能在几个小时前在后台进行了更新。

https://i.stack.imgur.com/NHZXM.png

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


ubuntu 20.04 上的 VScode 也有同样的问题。您是否找到了使集成终端正常工作的解决方案? (我正在使用 bash)
谢谢,这里有同样的问题。幸运的是我马上找到了你的帖子
P
Peter Mortensen

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

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

至:

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

M
Marilynn

更新计算机密码时收到上述错误消息。使用以下步骤重置我的 git 凭据:

转到控制面板 > 用户帐户 > 凭据管理器 > Windows 凭据。您将在列表中看到 Git 凭据(例如 git:https://)。单击它,更新密码,然后从您的 Git bash 执行 git pull/push 命令,它不会再抛出任何错误消息。


你是救命稻草,当我看到这个答案时,我正要放弃并向支持发送电子邮件,因为同样的事情发生在我身上(不知道为什么 Windows 凭据没有像我上次那样自动更新)更改我的计算机密码,但是哦)。
P
Peter Mortensen

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

注意:只能使用 Internet Explorer!其他浏览器不会更改您的系统凭据。

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

git config user.name "domainName\userName"

并做了。现在你可以推了!


j
jeppoo1

我尝试了令牌验证方法并让它工作了大约 3 次,并为此浪费了大约 2 小时的时间。出于某种原因,它对我们公司来说效果不佳。

我的解决方案是将身份验证方法从 HTTPS 更改为 SSH。这是一个 Github 指南 (https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)。

创建 SSH 密钥后,请记住更改 SSH 地址来源:

git remote add origin git@github.com:user/repo.git

A
Alpesh Patil

尝试推送到 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 密钥

从 ~/.ssh 目录复制本地公共 ssh 密钥 粘贴到 Github > Settings > SSH and GPG Keys > New SSH Key Try ssh -T git@github.com 这应该输出 Hi xxxxx!您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。


选项 -Tssh 中的作用是什么?为什么这里没有列出ssh.com/academy/ssh/command#ssh-command-line-options
-T 选项将在通过 SSH 连接到 Git 远程服务器时禁用伪终端分配。 Git 服务器将响应具有 -T 选项的 SSH 请求。
P
Peter Mortensen

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

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


P
Peter Mortensen

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


P
Peter Mortensen

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


m
msanford

如果这有帮助,因为这个问题现在是 git 的 http 身份验证问题的热门问题:Windows 凭据管理器正确存储了我的密码,并且因为我使用的是 Git LFS,所以我configured an http URL instead of the usual ssh://

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

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


O
Onat Korucu

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


A
Abhay Shekhar Yadav

https://i.stack.imgur.com/qJHv6.png

https://i.stack.imgur.com/nnulA.png

对我来说一切都很好,我也尝试了 Windows 凭据管理器,但问题也没有解决。然后突然间,我从防火墙中弹出,这是所有背后的罪魁祸首。在我手动单击允许后,我可以获取或推送到 GitHub。