无法使用PAT从Azure DevOps克隆git

iecba09b  于 2023-09-29  发布在  Git
关注(0)|答案(9)|浏览(130)

我无法从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:[email protected]/myproject/_git/myrepo/的形式传递令牌,我真的很惊讶人们说这有效...因为我的git抱怨,因为相信:意思是港口。
  • 尝试激活/停用git的凭据管理器 * 在Windows和Ubuntu上尝试。
  • 已尝试激活和停用简单凭据。
  • 尝试使用简单凭据,即用户名+密码。
  • 尝试将我的用户名放在https://username@中....
  • 尝试使用SSH
  • 尝试在git命令中使用http.extraHeader,头为
Authorization: Basic Base64Encoded(uname:PAT)
  • 尝试在git命令中使用http.extraHeader,头为
Authorization: Bearer PAT
  • 已尝试使用VSCode客户端。它自己生成PAT,但仍然无法进行身份验证和克隆。
  • 已尝试使用Rider VSTS客户端。它自己生成PAT,但仍然无法进行身份验证和克隆。
  • 尝试使用Linux的git凭据管理器。它promps代码,当我们在浏览器中进行身份验证时,它会成功生成PAT。不过,在那之后就无法鉴定了。

知道为什么这不管用吗

gdx19jrr

gdx19jrr1#

我已经成功地使用PAT这样;
1.复制您的存储库的克隆URL,例如
git clone https://<domain>.visualstudio.com/<domain>/_git/<repository>
1.复制PAT后,请将其用作:
git clone https://<PAT>@<domain>.visualstudio.com/<domain>/_git/<repository>
不需要用户名或密码,因为PAT就足够了。

xxe27gdn

xxe27gdn2#

我也遇到过同样的问题,花了很长时间寻找解决方案。我终于遇到了this post,它在Martinius79的评论部分包含了一个解决方案。
简而言之,它需要通过git http.extraheaders传递用户名和PAT(编码为base64),以便进行身份验证。
100%归功于原作者,只是在这里包括它,以帮助其他人找到它:
示例:git -c http.extraheader=“AUTHORIZATION:基本TXlHaXRTeW 5 jVXNlcjo 2bHFqNXJkcHEzdXBxZWVmd 2 o3 bDduZXN 5 NTR 3d 3gxNHFobDVlanl 5 NTVkb 2g 0 M3 d4 YzRh”克隆https://tfs.address/tfs/Collection/Project/_git/RepoName
使用的基本令牌BASE64编码:TXlHaXRTeW5jVXNlcjo2bHFqNXJkcHEzdXBxZWVmd2o3bDduZXN5NTR3d3gxNHFobDVlanl5NTVkb2g0M3d4YzRh
基本令牌BASE64解码:MyGitSyncUser:6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a
令牌由以下内容构建:在本示例中:虚构用户名:MyGitSyncUser使用的PAT:6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a
希望这对你有帮助!

dldeef67

dldeef673#

这个official guide procedure对我很有效,但有一个重要的点。当使用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

使用“echo”而不是“printf”会插入一个换行符,改变base64字符串(可能也适用于“echo -n”,但我没有试过)。此外,不要包括用户名,按照上面的片段。
在Ubuntu 18.04上使用git 2.17.1。

jhkqcmku

jhkqcmku4#

我也遇到了同样的问题,只用HTTPS解决了。
我发现我必须只使用终端,而不是使用dev.azure提供的任何“GUI快捷方式”,因为它们是为git-credential-manager设计的,它在windows上工作得很好,但在Ubuntu上却坏了。
显然,dev.azure git存储库具有不同的凭据(您需要设置),而不是您的Microsoft帐户凭据。
假设我的Microsoft帐户用户名为email protected(https://stackoverflow.com/cdn-cgi/l/email-protection),密码为Jd 1986
如果你尝试git cloning,这个凭证将工作,因为你 * 需要 * 为你的项目生成git凭证,然后使用它。
你可以从这里生成git凭证,x1c 0d1x
之后,保存它并使用设置的凭据。

进入你的终端,使用git clone的HTTP url,并输入给定的凭证。这对我很有效。

mzsu5hc0

mzsu5hc05#

Git http.extraheader & bearer

YAML样式管道可以使用预设变量System.AccessToken。在检查了Pipeline开始时的正式'Checkout ...'步骤后,我发现这一步在我的脚本中工作:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: 'git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" clone --depth 1 https://[email protected]/my-org/my-proj/_git/my-repo'

请注意,Azure DevOps job authorization scope可能会影响此

qjp7pelc

qjp7pelc6#

这是Ubuntu 18.10附带的curl 7.61.0中的已知回归。回归在curl 7.61.1中得到了修复,但Ubuntu 18.10还没有这个修复。参见(和支持)https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1805203

jdg4fx2g

jdg4fx2g7#

1.登录到Azure Dev Ops门户。
1.转到要克隆的项目。
1.从左侧菜单中选择Repo。
1.点击右上角的克隆。
1.点击生成Git凭证
1.输入给定的https克隆url,用户名和密码,您正在克隆存储库。
1.你完了!

wd2eg0qa

wd2eg0qa8#

确保您是Contributor组的成员,并且您在Azure存储库上的权限不限于您的用户或组。
AzureContributor组具有克隆、获取和浏览存储库内容的默认权限;还可以创建、评论、投票和贡献拉取请求。
Project Administrator Group的成员或Manage permissions设置为Allow for Git repositories(如here所述)的成员可以编辑这些权限。
如果您的组或用户没有克隆存储库的权限,您将获得问题所描述的行为。

nwo49xxi

nwo49xxi9#

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

进入security ->Personal access token->Add给予Description,选择All scopes,点击Create Token。

复制令牌并将其存储以供以后使用。这个token现在可以用来代替git用户的密码。

相关问题