使用 Azure Repos 进行身份验证
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
选择正确的身份验证方法对于安全访问 Azure Repos 和 Azure DevOps Server Git 存储库至关重要。 无论是在命令提示符下工作还是使用支持 HTTPS 或 SSH 的 Git 客户端,选择不仅提供必要访问权限的凭据,而且还要限制任务所需的范围。
当不再需要凭据来维护存储库的安全性时,请始终撤销凭据。 此方法可确保你能够灵活地安全地高效地处理代码,同时保护代码免受未经授权的访问。
身份验证机制
Microsoft Entra OAuth 令牌
使用 Microsoft Entra 生成用于访问 REST API 的令牌。 在使用个人访问令牌的地方,都可以使用 Microsoft Entra 令牌。 下面是有关如何从 Azure CLI 获取一次性访问令牌以调用 git fetch 的有用提示:
$accessToken = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv
git -c http.extraheader="AUTHORIZATION: bearer $accessToken" clone https://dev.azure.com/{yourOrgName}/{yourProjectName}/_git/{yourRepoName}
提示
请考虑使用 Git 凭据管理器 (GCM),以避免每次都输入凭据。 使用默认凭据类型为 Oauth
的 GCM 生成 Microsoft Entra 令牌。
个人访问令牌
个人访问令牌(PAT) 提供对 Azure DevOps 的访问权限,而无需直接使用用户名和密码。 这些令牌过期,并允许限制他们可以访问的数据范围。
如果系统上未设置 SSH 密钥,或者需要限制凭据授予的权限,请使用 PAT 进行身份验证。
Git 交互需要用户名,该用户名可以是空字符串以外的任何内容。 若要将 PAT 与 HTTP 基本身份验证配合使用,请使用 Base64-encode
你的 $MyPat
,如以下代码块所示。
在 PowerShell 中,输入以下代码。
$MyPat = 'yourPat'
$headerValue = "Authorization: Basic " + [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $MyPat))
$env:GIT_AUTH_HEADER = $headerValue
git --config-env=http.extraheader=GIT_AUTH_HEADER clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName
提示
如果你经常使用 PAT,请考虑使用 Git 凭据管理器 (GCM),以避免每次都输入凭据。 更好的是,尽可能探索使用默认凭据类型为 Oauth
的 GCM 来生成 Microsoft Entra 令牌,而不是 PAT。
SSH 密钥
通过在计算机上创建的公钥和私钥对,使用 SSH 进行密钥身份验证。 你将公钥与在 Web 上的用户名相关联。 当你使用 Git 时,Azure DevOps 将使用该密钥加密发送给你的数据。 使用不会通过网络共享或发送的私钥解密计算机上的数据。
如果你已在系统上设置了 SSH,那么 SSH 是一个不错的选项,只需将公钥添加到 Azure DevOps 并使用 SSH 克隆你的存储库。 对于在 Linux、macOS 或 Windows 上运行 Git for Windows,无法使用 Git 凭据管理器 或 个人访问令牌 进行 HTTPS 身份验证的用户首选 SSH。
有关详细信息,请参阅 使用 Azure DevOps 设置 SSH。
使用 Git 凭据管理器生成令牌
使用 Git 凭据管理器(GCM),可以避免反复输入凭据,并提升访问 Azure Repos 时令牌的安全性。 登录到 Web 门户,生成一个令牌,然后在连接到 Azure Repos 时使用该令牌作为密码。 当安装了凭据管理器并将其保存在本地以供 Git 命令行或其他客户端使用时,可以根据需要生成 Microsoft Entra 令牌或 PAT。
现有存储库
删除现有源: 如果以前使用用户名添加源,请运行以下命令将其删除:
git remote remove origin
使用 PAT 进行身份验证: 如果遇到标准身份验证问题,请运行以下命令,通过命令行进行身份验证:
git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<project-name>/_git/<repo_name>
git push -u origin --all
path to git repo = /_git/do
是指 Azure DevOps for Git 存储库中使用的 URL 路径结构。/_git/
段指示你正在访问 Git 存储库,应将do
替换为存储库的实际名称。 例如,如果存储库命名为my-repo
,则路径为“/_git/my-repo
”。克隆存储库: 如果使用 Git 并需要进行身份验证,请运行以下命令:
git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}
将
{organization}
替换为 Azure DevOps 组织名称,并将{repository}
替换为存储库的名称。