Microsoft TFS ssh 克隆失败

Posted

技术标签:

【中文标题】Microsoft TFS ssh 克隆失败【英文标题】:Microsoft TFS ssh cloning fails 【发布时间】:2017-07-28 20:42:03 【问题描述】:

我正在尝试从我的 Team Foundation Server 域上的项目中克隆一个 repo。我在我的个人资料安全性下创建了一个 SSH 密钥。但是,在接受 repo 的密钥后,我仍然被要求使用密码登录并且身份验证失败:

git clone ssh://mydomain@mydomain.visualstudio.com:22/Project/_git/project-repo
Cloning into 'project-repo'...
mydomain@mydomain.visualstudio.com's password: 
Permission denied, please try again.
mydomain@mydomain.visualstudio.com's password: 
Permission denied, please try again.
mydomain@mydomain.visualstudio.com's password: 
Permission denied (password,publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我已经尝试了我的 visualstudio.com 密码和 SHH 密钥密码,但都不起作用。但它为什么要我输入密码?

【问题讨论】:

什么版本的 TFS? 我认为这可能与一个错误有关:github.com/Microsoft/vscode/issues/13680 按照这些步骤(即使用 Git Bash 而不是 VSCode)工作:***.com/a/37618202/361842 【参考方案1】:

在 VSTS 中使用 ssh 的先决条件如下:

    生成 ssh 密钥。在 git bash 中,在 git bash 中使用 ssh-kengen -> 选择保存密钥的路径 -> 输入密码(如果您不需要密码,请直接按回车)。 在 VSTS SSH 公钥(配置文件 -> 安全)中的 KeyData 中添加 .ssh/id_rsa.pub 文件的内容。

对于您的情况,.ssh/id_rsa.pub 的内容似乎与 VSTS SSH 公钥不同。所以你最好做上面的step1和setp2,再用ssh协议克隆十次。

【讨论】:

【参考方案2】:

我解决这个问题的方法是在没有密码的情况下删除并重新创建我的 id_rsa.pub。

【讨论】:

【参考方案3】:

使用 SSH 时的默认身份验证模式是私钥。每当由于某种原因失败时,ssh-agent 就会退回到基于用户名和密码的身份验证。

基于默认密钥的身份验证可能失败的原因有多种。以下是最常见的情况:

a) ssh-agent 找不到默认的私钥文件 id_rsa,并且没有明确指定其他密钥路径。

b) 存储在服务器中的公钥不正确。

c) 您尝试克隆的路径不正确。

在任何情况下,要解决问题,首先执行 git clone 命令并使用以下命令进行详细日志记录:

GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo

您可以浏览日志中的每个步骤,以直观了解问题可能是什么。


(a) 情况下的故障排除

确保您在 .ssh 目录中有默认密钥名称 id_rsa。您可能在使用 ssh-keygen 命令生成密钥时指定了一些不同的密钥名,或者根本没有任何密钥)。

如果您想指定不同的身份验证密钥,请使用以下命令:

ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey; git clone ssh://pathToYourRepo'

(b)情况下的故障排除

确保在服务器中存储公钥时没有多余的空格。

(c)情况下的故障排除

确保您没有尝试使用存储库路径的 https 版本进行克隆。

【讨论】:

以上是关于Microsoft TFS ssh 克隆失败的主要内容,如果未能解决你的问题,请参考以下文章

为啥添加 Microsoft.CodeAnalysis.NetAnalyzers 时 TFS 2015 SP3 构建代理会失败?

SSH 到 GitLab 权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic)

即使安装了 Microsoft.Net.Compilers,C# 6.0 构建也会在 TFS 构建上失败

将存储库从VSTS帐户克隆到不同的TFS帐户,并执行提取以进行更新

使用Visual Studio 2017克隆TFS Git repo时出错400

使用 TFS BDT 运行 Telerik 测试失败并出现 Microsoft.VisualStudio.Shell.11.0.dll 找不到错误