如何在Azure DevOps Server中使用PAT克隆Git仓库并适配SmartGit
问题原因说明
本地部署的Azure DevOps Server 2020.0.1和云版Azure DevOps的身份验证逻辑存在差异,云版支持直接在仓库URL中嵌入PAT完成认证,但本地部署版本默认未开启URL内嵌凭证的原生解析支持,所以你测试的多种URL内嵌凭证格式都会返回认证失败。
你使用手动添加Basic认证头的命令可以正常执行,并不需要IIS开启基本身份验证,这是ADOS本身的内置PAT验证逻辑兼容Basic认证的编码格式,和IIS层面的基础认证模块没有关系,属于文档描述的歧义点。
SmartGit配置PAT认证的方案
你可以通过以下两种方式完成配置:
方案1:克隆时直接填写凭证
- 打开SmartGit克隆界面,输入正常的仓库HTTPS地址:
https://yourURL/yourOrgName/yourProjectName/_git/yourRepoName - 进入认证步骤时,用户名栏可以留空或者填写任意字符串,密码栏直接输入你的全权限PAT,即可正常完成克隆操作。
方案2:配置全局自定义认证头(适合长期使用)
如果你需要经常访问该ADOS实例下的仓库,可以直接在Git配置中添加全局认证头,SmartGit会自动读取该配置:
- 用你之前的PowerShell命令生成Base64编码的凭证字符串:
$MyPat = '你的PAT值' $B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat"))
- 打开SmartGit设置,找到「Git」-「自定义配置」,添加如下配置项:
[http "https://你的ADOS域名/"] extraHeader = Authorization: Basic 替换为上一步生成的$B64Pat值
配置完成后所有该域名下的Git操作都会自动携带认证头,不需要重复输入凭证。
异常排查点
如果配置后仍然认证失败,优先检查两个配置:
- 若你的ADOS使用自签名HTTPS证书,需要在SmartGit中添加证书信任,或者临时关闭对应域名的SSL校验(仅测试用,不推荐生产环境使用):
git config --global http."https://你的ADOS域名/".sslVerify false - 确认PAT未过期、权限范围包含对应仓库的代码读取权限,你已经验证过PAT可用于Agent和REST API,该问题出现概率极低。
内容的提问来源于stack exchange,提问作者Remkop
相关产品推荐
相关产品推荐

