我使用 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 = ############
https://
开头,而不是 http://
。
如果您在 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
在 Windows 上,尝试以下步骤来编辑或删除保存的凭据:
单击开始类型:凭据管理器(在 Windows 10 上,位于“开始 → 设置”下。然后搜索“凭据管理器”)查看 Windows 凭据管理器快捷方式并双击它以打开应用程序。打开应用程序后,单击“Windows 凭据”选项卡。找到要删除/更新的凭据。它们将以“git:”开头,并且可能以“ada:”开头。单击凭证条目。它将打开条目的详细信息视图。根据需要单击编辑或删除并确认。起泡,冲洗,必要时重复。
https://i.stack.imgur.com/NejcV.png
也许您最近更改了 Git 帐户的密码。您可以尝试使用 -u
选项的 git push
行:
git push -u origin branch_name_that_you_want_to_push
执行上述命令后,它会要求输入密码。提供您的更新密码。
https
git push -u
如果您更改了 git 服务帐户 (Git) 的登录名或密码,就会发生这种情况。您还需要在 Windows 凭据管理器中更改它。在 Windows 搜索菜单中键入“凭据管理器”打开它。
Windows Credentials Manager->Windows Credential 并在 Generic Credentials 下编辑您的 git 密码。
在 Windows 上,这对我有用,它还记得我的凭据:
运行 Git Bash 指向存储库目录运行 git config --global credential.helper wincred
git config –global credential.helper unset
Source,this answer 中有更多详细信息。
git config --global --unset credential.helper
吗?这就是在 Git Bash 中对我有用的东西。
git config --global --unset credential.helper
。最终,我用 git config credential.helper store
恢复了我的正确设置。
git config --global credential.helper osxkeychain
首先,您可以确保使用正确的 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://
更改为 git://
,而我需要 git@github.com:user.repo.git
。奇怪的是git没有以某种方式报告问题,只是静默挂起
git://
是一个有效的(尽管已经过时)协议,它只是尝试并使用它,等待远程服务器在端口 9418 上侦听。
基本上我的凭证已经过期,我正面临这个问题。
以下两个命令帮助了我:
git config --global --unset credential.helper
git config credential.helper store
下次您尝试推送时,它会要求您提供凭据。
请遵循以下准则以获取有关用户名和密码的安全和非安全存储的更多详细信息:
git-credential-store
git-credential-cache
在 Windows 上,如果您在输入正确的密码和用户名时发现身份验证错误问题,那就是 Git 问题。为了解决这个问题,当你在你的机器上安装 Git 时,取消选中 Enable Git Credential Manager 选项。
https://i.stack.imgur.com/V6yNw.png
我认为由于某种原因 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。
我遇到了同样的错误。我尝试了本页中提到的所有解决方案,但它们都不起作用。最后,我找到了解决方案。
如果有时您的系统密码最近随时更改,则会出现此类错误。它将尝试从旧密码进行验证。因此,请按照以下步骤操作:
转到控制面板单击凭据管理器下的用户帐户转到管理 Windows 凭据转到通用凭据展开 Git 服务器选项卡单击从保管库中删除
此外,您可以单击编辑并直接更改此处存储的密码。
在您尝试上述所有操作之前,请再次尝试 git push
,是的,它对我有用。
我不太确定我做了什么来得到这个错误,但是这样做:
git remote set-url origin https://...
对我不起作用。然而:
git remote set-url origin git@bitbucket.org:user/repo
不知何故奏效了。
我遇到过
git fetch
fatal: Authentication failed for 'http://...."
在我的 Windows 密码过期并被更改后。使用 Windows Credential Manager 多次获取、重新启动甚至重新安装 Git 都没有帮助。
令人惊讶的是,正确的答案在评论中的某个地方,但不在答案中(其中一些真的很奇怪!)。
您需要转到控制面板 → 凭据管理器 → Windows 凭据并更新您的 git 密码:http://your_repository_address
我正在添加到与 Git 链接的 Bitbucket,并且不得不删除存储的密钥,因为这导致了致命错误。
为了解决,我打开命令提示符并运行
rundll32.exe keymgr.dll, KRShowKeyMgr
我删除了负责登录的密钥,下次将文件推送到存储库时,系统会提示我输入凭据并输入正确的凭据,从而成功推送。
同样的错误(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
现在提示输入用户名/密码提示。
就我而言,我最近更改了我的 windows 密码,并为 git 相关操作(拉、推、获取等)配置了 SSH 密钥,在遇到“致命:身份验证失败”错误后,我在 windows 中更新了密码所有以 git:... 开头的项目的凭据管理器(控制面板\用户帐户\凭据管理器),然后再试一次,这次成功了!
我有同样的问题。我以这种方式设置 URL:
git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git
我还从配置文件中删除了此条目:askpass = /bin/echo
。
然后“git push”向我询问用户名和密码,这次成功了。
askpass = /bin/echo
。
我昨天开始在 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 远程操作会再次正常。
只需从您的 .config 文件更改:
url = http://www.github.com/###user###/Random-Python-Tests
至:
url = http://###user###@github.com/###user###/Random-Python-Tests
更新计算机密码时收到上述错误消息。使用以下步骤重置我的 git 凭据:
转到控制面板 > 用户帐户 > 凭据管理器 > Windows 凭据。您将在列表中看到 Git 凭据(例如 git:https://)。单击它,更新密码,然后从您的 Git bash 执行 git pull/push 命令,它不会再抛出任何错误消息。
如果您在 Windows 上并尝试推送到具有域用户作为存储库用户 (TFS) 工作的 Windows 服务器,请尝试使用 Internet Explorer 进入 TFS URL(即 http:\\tfs
)。输入您的域帐户凭据并显示该页面。
注意:只能使用 Internet Explorer!其他浏览器不会更改您的系统凭据。
现在转到 Git Bash 并更改存储库的远程用户,如下所示:
git config user.name "domainName\userName"
并做了。现在你可以推了!
我尝试了令牌验证方法并让它工作了大约 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
尝试推送到 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 访问权限。
-T
选项将在通过 SSH 连接到 Git 远程服务器时禁用伪终端分配。 Git 服务器将响应具有 -T
选项的 SSH 请求。
对我来说,我忘记了我在 github.com 上更改了密码,而我用于 shell 身份验证的钥匙串从未更新为那个新密码。
从我的钥匙串中删除所有 Git,然后重新运行 Git 请求有助于解决问题,再次提示我输入新密码。
我在 Windows 上遇到了同样的问题。大多数时候,由于使用多个 Git 帐户,我通常会遇到这个问题。如果您使用的是 Windows,请以管理员身份打开终端并尝试再次运行命令。确保您具有管理员访问权限。
如果这有帮助,因为这个问题现在是 git 的 http 身份验证问题的热门问题:Windows 凭据管理器正确存储了我的密码,并且因为我使用的是 Git LFS,所以我configured an http URL instead of the usual ssh://。
我的问题是我的公司密码策略强制更改帐户密码,但我从未更新我存储的凭据(因为我总是使用 ssh 密钥)。
只需直接在 Wincred GUI 中更新密码即可:只需查找 git:https://<your-url>
条目。
这发生在我们在从 Gitlab 登录之前强制“双因素身份验证”之后。我们必须将 id_rsa.pub 中的文本粘贴到 Gitlab,然后使用终端在 VS 代码中重新引入存储库。
https://i.stack.imgur.com/qJHv6.png
https://i.stack.imgur.com/nnulA.png
对我来说一切都很好,我也尝试了 Windows 凭据管理器,但问题也没有解决。然后突然间,我从防火墙中弹出,这是所有背后的罪魁祸首。在我手动单击允许后,我可以获取或推送到 GitHub。
不定期副业成功案例分享
git remote add origin https://username:access-token@github.com/username/repo.git
来存储您的个人访问令牌。