【问题标题】:Unable to authenitcate TFS from git command无法从 git 命令验证 TFS
【发布时间】:2020-03-12 21:28:12
【问题描述】:

我使用 TFS 进行源代码控制,当我在新机器上使用 git 命令行时,我需要手动保存凭据管理器。否则,我会收到“身份验证失败”

除了在凭证管理器中预定义凭证之外,还有其他选择吗?

目前来自 CentOS 7 的案例:

【问题讨论】:

    标签: linux git tfs credential-manager


    【解决方案1】:

    Git 凭据管理器,仅用于提供安全的 Git 凭据存储。可以在凭证管理器中预定义凭证。

    但是对于macOS and Linux,并没有使用凭证管理器,

    我们建议使用 SSH 密钥 向 Azure DevOps 进行身份验证, 不是凭据管理器。

    SSH 公钥认证使用一对生成的加密密钥。公钥是共享的,用于加密消息。私钥在您的系统上安全可靠地保存,用于读取使用公钥加密的消息。

    更多详情请看我们的官方教程--Use SSH key authentication


    更新

    此外,您还可以使用 PAT 令牌访问 git 存储库。

    要在使用 Git 时通过 PAT 进行身份验证,您可以使用它作为密码。用户名可以是任何东西,因为您的身份由 PAT 标识。例如:

    • 用户名:随便
    • 密码:

    或者:

    git clone https://anything:<PAT>@dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

    更多详情请看这个link

    至于如何使用PAT,可以参考——Authenticate access with personal access tokens

    注意:这仅适用于 TFS2017 及更高版本。此外,建议您在使用 Azure DevOps Server 时关闭 IIS 基本身份验证。在您的 Windows 计算机上启用 IIS 基本身份验证后,它会阻止您使用个人访问令牌 (PAT) 作为身份验证机制。

    【讨论】:

    • 我使用 ssh 作为它提出时发布的解决方法。但是,当 TFS 触发代码更改的服务挂钩时,它会触发 (https) 回调而不是 ssh。
    • 我的情景是我 1- 在 Jenkins 管道中定义了我的存储库以使用 ssh 进行克隆。 2-当代码推送到 TFS 时,TFS 中有一个服务挂钩,通知 Jenkins 说“代码已推送,使用此 URL 克隆”,但 URL 是 https 而不是 ssh。所以 jenkins 没有这样做,因为没有为 https 定义凭据。我不想深入修改 TFS 以使用 ssh 回调而不是 https。
    • @abdulrhmanalhazmi 如果是这样,在您的场景中,您可以选择使用 PAT 令牌来访问您的 git 存储库并进行克隆。详细信息和示例命令行,您可以参考我更新的回复。只是一个限制,它要求您的 TFS 版本是 2017 或更高版本。还需要关闭 TFS 服务器上的 IIS 基本身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多