当前位置: 首页 > 知识库问答 >
问题:

Azure Devops OnPremise,致命:克隆Git repo时的身份验证失败

花稳
2023-03-14

使用OnPremise Azure Devops 2019服务器,我试图通过在ProcessInfo中调用以下git命令以编程方式克隆git存储库:

clone https://{username}:{PATTOKEN}@{DEVOPSSERVERDOMAIN}/{TEAMPROJECT}/_git/{PROJECT}

这里是c#代码:

  var gitInfo = new ProcessStartInfo
                    {
                        CreateNoWindow = true,
                        RedirectStandardError = true,
                        RedirectStandardOutput = true,
                        FileName = pathToGitExe
                    };

Process gitProcess = new Process();
                gitInfo.Arguments = theCloneCommand
                gitInfo.WorkingDirectory = workingFolder;
                gitProcess.StartInfo = gitInfo;
                gitProcess.Start();

但我一直在犯错误

Cloning into 'PROJECT'...
fatal: Authentication failed for '{DEVOPSSERVERDOMAIN}/{TEAMPROJECT}/_git/{PROJECT}'

PAT是否使用不当?有什么建议吗

共有2个答案

林富
2023-03-14

如果为Azure Devops服务器启用IIS基本身份验证,则PAT无效。请参阅启用IIS基本身份验证使使用个人访问令牌无效。

正如上面文档中所述,您需要向Git请求添加一个额外的头,该头包含一个base 64编码“user:PAT”:

git-chttp。extraheader='Authorization:Basic[user:PAT]的base 64编码'ls remotehttp://tfsserver:8080/tfs/DefaultCollection/_git/projectName

您可以使用下面的权力脚本对用户名和PAT进行Base64编码:

$MyPat = 'yourPAT'
$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("user:$MyPat"))

或者用C#代码:

Convert.ToBase64String(
                    System.Text.ASCIIEncoding.ASCII.GetBytes(
                        string.Format("{0}:{1}", "user", personalaccesstoken))));

有关详细信息,请参阅此处的文档。

您可以尝试使用用户名和密码而不是PAT作为身份验证:

git clone https://{username}:{password}@{DEVOPSSERVERDOMAIN}/{TEAMPROJECT}/_git/{PROJECT}
#if your password or username contain @ replace it with %40
陆卓
2023-03-14

据我所知,您应该尝试没有用户名的克隆。

https://github.com/MicrosoftDocs/azure-devops-docs/issues/2455

https://<PAT>@mydomain.visualstudio.com/myproject/_git/myrepo
 类似资料:
  • 尝试访问私有公司 tfs。他们通过向Windows用户(域\登录)授予适当的权限来授予我访问权限。 我可以很好地访问tfs的web界面,浏览存储库和其他东西。 但当我试图逃跑 它失败了 尝试与家用PC没有公司网络的东西 - 同样的错误。 在PowerShell、Git Bash、Clone via VisualStudio中尝试过-同样的错误。 SSH关闭(给定请求超时)。 网络 企业助手试图帮助

  • 每次我尝试用Pycharm在GitHub中推送一个存储库时,它都会失败。 在Settings->Version Control->Git中,Git可执行文件的路径是用完整路径设置的,SSH可执行文件:Buil-in Win 7上的Pycharm版本3.1.1 Git版本1.8.4.msysgit.0。

  • 我第一次将应用程序部署到数字海洋,遇到了两个(可能更多)问题。 1) 在将添加到Gemfile后,我无法。我发现kgio与windows不兼容。我必须要Gemfile吗。当我通过capistrano部署时是否存在锁?我如何解决这个问题? 2)我在服务器上的postgreql上遇到身份验证问题。 我运行了这些命令(以及其他一些命令): 每次我限制部署时,我都会收到这个错误: 我尝试输入一个我知道不存

  • 当我创建一个新用户,但它无法登录数据库时。 我这样做: 然后创建一个数据库: 之后,我尝试登录,但出现错误: 我试图解决这个问题,但失败了。

  • 运行时,会收到以下错误消息: 致命:用户"rails_dev"的身份验证失败 无法为{"适配器"=创建数据库 PG::ConnectionBad:FATAL:Ident身份验证用户“rails_dev” /home/whitehat/.rvm/gems/ruby-2.4.0/gems/PG-0.21.0/lib/PG.rb:56:in'initialize' /home/whitehat/.rvm

  • 我在Windows 10 Pro x64上使用GitLab Community Edition 9.1.3 2E4E522。使用Git客户端。