GIT Fatal error: Authentication failed in Visual Studio

GIT Fatal error: Authentication failed in Visual Studio

截至今天,我在 Azure-DevOps 中尝试对我的存储库使用 git 命令时遇到错误。这些存储库位于 DevOps 上的一个项目中,我可以使用相同的帐户访问该项目,并且没有显示任何最近更改的迹象。我可以采取的重现步骤是:

  1. 打开命令提示符并输入git fetch
  2. 出现 window 提示登录
  3. 我点击账户
  4. 未提示密码,但收到一封电子邮件,说明已创建 PAT
  5. 命令提示符产生错误

错误:

fatal: Authentication failed for `<link to repository>`

到目前为止我尝试过的事情:

目前运行:

编辑:

我尝试将 Visual Studio CodeAzure Repos 1.149.2 扩展名一起使用,但遇到了同样的错误。它为我提供了 Microsoft 页面以输入我授予的设备登录代码,但使用 git 命令会给我相同的错误消息。

我的配置文件也已从 Azure DevOps 环境中删除并重新添加,但没有成功。

尝试并检查 git 配置 credential.helper 的值。

如果您看到 "manager"、open the Windows Credentials Manager,并将 PAT(创建的个人访问令牌)作为密码(同时保持您的常规登录,关联到远程 URL)

然后重试,看看问题是否仍然存在。

要强制 Git 凭据管理器停止干扰,您可以将以下内容添加到全局 git 配置中:

[credential]
    helper = 

这有效地关闭了所有凭据管理器。然后,在 Azure DevOps 中,您可以配置一组 Git 凭据或个人访问令牌,并使用它直接连接。

它没有解释您遇到的问题。鉴于您的帐户似乎是 Machine Bound 和 AAD 帐户,很多事情都可以发挥作用。这包括 AAD Home-Realm 发现和单一 Sign-on 和 Azure Active Directory 来宾帐户。

另一个可能的问题是您的 Windows 凭据存储,它有多个存储 Azure DevOps 和 Git 凭据的位置。最后,用于 sign-in 至 Visual Studio 2019 以检索其许可证的帐户可能正在播放。

根据您提供的信息,我们几乎不可能在不回头看的情况下帮助您解决问题。如果您有可用的 Azure 支持请求,我几乎会建议您提出请求,以便工程师可以与您一起查看。

可选运行

git-credential-manager.exe erase

并传入以下数据

protocol=https
host=dev.azure.com
path=/jessehouwing/vsts-extensions/_git/vsts-github-tasks
{newline}

告诉 git 删除为您的帐户存储的凭据

在我的特殊情况下,在与 Microsoft 来回发送许多邮件后,我发现我的两个帐户以某种方式开始相互冲突,导致出现奇怪的错误。一个很好的例子是,在 DevOps 中对 wiki 进行更改会在提交试验中显示与我登录的帐户不同的帐户。

最终 Microsoft 设法修复了它,此后我再也没有遇到任何问题。

我遇到了同样的情况 - 在 VS 2017 中一切正常,但 2019 年就不行了。我找到了this article, which suggested I update the Git Credential Manager for Windows。我安装的版本(在 C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe)是 3 岁。下载、安装后问题就解决了。

我在 VS2019 中遇到了类似的问题,我移动了笔记本电脑,尽管我使用凭据管理器删除和更改了凭据,但它拒绝进行身份验证。我链接到 Assembla 中的存储库,在存储库设置下的团队资源管理器 window 中,我注意到有一个复选框可以覆盖全局用户名和电子邮件设置,这与我的 Assembla 登录名不同。

同样的错误(Windows、Git、Bash命令行、Visual Studio、bitbucket)。使用 https(不是 ssh)应该提示输入登录凭据但错误(可能是因为我的 bitbucket 凭据已更改):

$ git pull origin master
fatal: Authentication failed for 'https://bitbucket.../my_git_project.git'
$ git config -l
...
credential.helper=manager
...

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

git pull 现在提示 username/password 提示。