无法使用PAT从Azure DevOps克隆git

Jos*_*ose 7 git authentication token access-token azure-devops

我无法从Azure DevOps克隆一个简单的存储库。操作系统:Ubuntu 18.10

我这样做:

  • 转到Azure DevOps
  • 单击我的用户名右上角
  • 转到安全标签
  • 创建具有所有作用域的PAT(确保没有作用域问题)
  • 将PAT复制到剪贴板
  • 将PAT粘贴到其他位置以确认PAT已正确复制(我知道...不安全,但这不在此问题范围内)
  • 转到我的控制台
  • 问题: git clone https://myorganization.visualstudio.com/myproject/_git/myrepo/
  • 我输入用户名和密码(PAT)

我不断收到来自Git的消息: fatal: Authentication failed for 'https://myorganization.visualstudio.com/myproject/_git/myrepo/'

我正在阅读其他人的解决方案,但没有一个对我有用。我也试过这个:

  • https:// usename:token@myorganization.visualstudio.com/myproject/_git/myrepo/的形式传递令牌,我真的很惊讶,有人说这对我的git有用,因为我相信:表示端口。
  • 尝试激活/停用git的凭据管理器*在Windows和Ubuntu上尝试过。
  • 试图激活和停用简单凭证。
  • 尝试使用简单的凭据,即用户名+密码。
  • 试图将我的用户名放在https:// username @ ...。
  • 尝试使用SSH
  • 尝试在git命令中使用http.extraHeader,标题为
    授权:基本Base64Encoded(uname:PAT)
  • 尝试在git命令中使用http.extraHeader,标题为
    授权:承载式PAT
  • 尝试使用VSCode客户端。它可以自行生成PAT,但仍无法进行身份验证和克隆。
  • 尝试使用Rider VSTS客户端。它可以自行生成PAT,但仍无法进行身份验证和克隆。
  • 试图为Linux使用git凭证管理器。它会提示代码,当我们在浏览器中进行身份验证时,它将成功生成PAT。尽管如此,之后仍无法进行身份验证。

任何线索为什么这不起作用?

jab*_*ong 16

我像这样使用 PAT 取得了成功;

  1. 复制您的存储库的克隆网址,例如 git clone https://<domain>.visualstudio.com/<domain>/_git/<domain>
  2. 复制后,将 PAT 用作;

git clone https://<PAT>@<domain>.visualstudio.com/<domain>/_git/<domain>

不需要用户名或密码,因为 PAT 就足够了。


小智 10

这个官方指导程序对我有用,但有一点很重要。在进行 Base64 编码时,必须注意不可打印的字符。

指南说:

MY_PAT=yourPAT      # replace "yourPAT" with your actual PAT
B64_PAT=$(printf ":$MY_PAT" | base64)
git -c http.extraHeader="Authorization: Basic ${B64_PAT}" clone 
https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName
Run Code Online (Sandbox Code Playgroud)

使用“echo”而不是“printf”会插入换行符,更改base64字符串(可能也适用于“echo -n”,但我还没有尝试过)。另外,不要包含用户名,如上面的代码片段所示。

在 Ubuntu 18.04 上使用 git 2.17.1。


小智 8

我也遇到过同样的问题,并且花了很长时间寻找解决方案。我终于看到了这篇帖子,其中包含Martinius79的评论部分中的解决方案。

简而言之,要求它通过git http.extraheaders传递编码为base64的用户名和PAT,以便进行身份验证。

100%归功于原始作者,仅在此处包括它以帮助其他人查找它:

范例:git -c http.extraheader =“授权:基本TXlHaXRTeW5jVXNlcjo2bHFqNXJkcHEzdXBxZWVmd2o3bDduZXN5NTR3d3gxNHFobDVlanl5NTVkb2g0M3d4YzRh / Rev / Rev / Rev_Reset / Rev_Rev /

使用的基本令牌BASE64编码为:TXlHaXRTeW5jVXNlcjo2bHFqNXJkcHEzdXBxZWVmd2o3bDduZXN5NTR3d3gxNHFobDVlanl5NTVkb2g0M3d4YzRh

基本令牌BASE64解码:MyGitSyncUser:6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a

令牌的构造方法如下:在此示例中:虚拟用户名:MyGitSyncUser使用的PAT:6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a

我希望这有帮助!

  • 我将其添加到我的 .bashrc 中: `AZURE_PAT="&lt;your PAT&gt;"; AZURE_AUTH_HEADER=$(echo -n "任何内容:$AZURE_PATH" |base64 -w0); 别名 azure-git='git -c http.extraheader="授权:基本 ${AZURE_AUTH_HEADER}"'` (4认同)
  • 对我来说这是行不通的。即我得到的结果与不设置 -c http.extraheader 相同的结果 (2认同)

Sal*_*man -4

尝试:首先从凭据管理器中删除 git 凭据。尝试生成新的个人访问令牌来解决此错误

错误

转到安全性 -> 个人访问令牌 -> 添加给出描述,选择所有范围,单击创建令牌。

拍

复制令牌并存储以供以后使用。现在可以使用此令牌代替 git 用户的密码。

代币

  • 您在这篇文章中提到的错误与我的问题完全无关。 (5认同)