Git 仅 TFS 2018 身份验证失败
Git authentication failing to TFS 2018 only
我最近搭建了一个TFS 2018服务器,设置为git。几个月来一切正常,直到上周我开始看到以下错误:
C:\temp\git>git clone https://tfs.mycompany.com/project/team/_git/framework
Cloning into 'framework'...
fatal: Authentication failed for 'https://tfs.mycompany.com/project/team/_git/framework/'
经过将近一周的故障排除,我仍未找到问题的根本原因。我尝试过的一切都会导致同样的错误。我在网上和 SO 中找到的所有解决方案都没有用,即删除 git 文件夹、卸载 git、重新安装 git、删除 .cache 文件,无论什么...都没有区别。
今天我发现我可以将 git for windows 客户端用于我们的旧 TFS 2015 实例和 github 而不会出现任何错误,所以这似乎只是一个 TFS 2018问题。我搜索并搜索了可能已更改的任何安全设置,但找不到任何我可以更改的会影响此庄园的安全相关内容。我也检查了服务器证书,它似乎还有一年的有效期,所以我不认为是这样。
我还发现 Visual Studio 2015 可以克隆并与 TFS 2018 服务器同步 - 没有身份验证错误。显然,它有自己的内置 git 客户端,不受任何导致 windows 的 git 客户端身份验证问题的影响。 Visual Studio 2017 为 windows 客户端抛出与 git 相同的错误,所以我猜它在后台使用该客户端,这与 vs2015 不同。
目前,我正在为 windows 客户端使用最新的 git,它是唯一安装的客户端(vs2015 除外)- 删除了所有其他 git 客户端,即 TortoiseGit。另请注意,我已经删除了 TFS 2018 服务器的所有 windows 凭据,而且我从未像 Microsoft 的文章所建议的那样提示我输入用户名或密码。系统也没有提示我输入 TFS 2015 服务器的凭据,但凭据管理器具有该服务器的有效凭据。
有没有人知道这里可能出了什么问题?我们的服务器此时完全没用,因为没有人可以同步更改。
首先,检查您的 credential helper:它可能缓存了不正确的凭据:
git config credential.helper
其次,检查您的所有配置:
git config -l --show-origin
寻找任何 insteadOf 指令,它可以将 https URL 更改为 SSH 指令。
将 TFS 服务器身份验证更改为 NTLM,并且 GIT 克隆按预期工作。我相信更新 3 会在没有询问的情况下将其更改为 kerberos 身份验证,或者我可能掩盖了它。下面是改回来的命令。
C:\Program Files\Microsoft Team Foundation Server 2018\Tools>TFSConfig Authentication /provider:NTLM /siteType:ApplicationTier
我最近搭建了一个TFS 2018服务器,设置为git。几个月来一切正常,直到上周我开始看到以下错误:
C:\temp\git>git clone https://tfs.mycompany.com/project/team/_git/framework
Cloning into 'framework'...
fatal: Authentication failed for 'https://tfs.mycompany.com/project/team/_git/framework/'
经过将近一周的故障排除,我仍未找到问题的根本原因。我尝试过的一切都会导致同样的错误。我在网上和 SO 中找到的所有解决方案都没有用,即删除 git 文件夹、卸载 git、重新安装 git、删除 .cache 文件,无论什么...都没有区别。
今天我发现我可以将 git for windows 客户端用于我们的旧 TFS 2015 实例和 github 而不会出现任何错误,所以这似乎只是一个 TFS 2018问题。我搜索并搜索了可能已更改的任何安全设置,但找不到任何我可以更改的会影响此庄园的安全相关内容。我也检查了服务器证书,它似乎还有一年的有效期,所以我不认为是这样。
我还发现 Visual Studio 2015 可以克隆并与 TFS 2018 服务器同步 - 没有身份验证错误。显然,它有自己的内置 git 客户端,不受任何导致 windows 的 git 客户端身份验证问题的影响。 Visual Studio 2017 为 windows 客户端抛出与 git 相同的错误,所以我猜它在后台使用该客户端,这与 vs2015 不同。
目前,我正在为 windows 客户端使用最新的 git,它是唯一安装的客户端(vs2015 除外)- 删除了所有其他 git 客户端,即 TortoiseGit。另请注意,我已经删除了 TFS 2018 服务器的所有 windows 凭据,而且我从未像 Microsoft 的文章所建议的那样提示我输入用户名或密码。系统也没有提示我输入 TFS 2015 服务器的凭据,但凭据管理器具有该服务器的有效凭据。
有没有人知道这里可能出了什么问题?我们的服务器此时完全没用,因为没有人可以同步更改。
首先,检查您的 credential helper:它可能缓存了不正确的凭据:
git config credential.helper
其次,检查您的所有配置:
git config -l --show-origin
寻找任何 insteadOf 指令,它可以将 https URL 更改为 SSH 指令。
将 TFS 服务器身份验证更改为 NTLM,并且 GIT 克隆按预期工作。我相信更新 3 会在没有询问的情况下将其更改为 kerberos 身份验证,或者我可能掩盖了它。下面是改回来的命令。
C:\Program Files\Microsoft Team Foundation Server 2018\Tools>TFSConfig Authentication /provider:NTLM /siteType:ApplicationTier