Microsoft TFS ssh克隆失败

时间:2017-03-08 10:21:59

标签: ssh tfs clone azure-devops

我正在尝试从我的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密钥密码都没有工作。但为什么要问我密码?

3 个答案:

答案 0 :(得分:2)

使用ssh进行VSTS的先决条件如下:

  1. 生成ssh密钥。在git bash中,在git bash中使用ssh-kengen - >选择保存密钥的路径 - >输入密码(如果您不想要密码,请按直接输入)。
  2. 在VSTS SSH公钥(配置文件 - >安全性)中添加KeyData中.ssh/id_rsa.pub文件的内容。
  3. 对于您的情况,似乎.ssh/id_rsa.pub的内容与VSTS SSH公钥不同。因此,您最好使用ssh协议执行上面的step1和setp2以及十次克隆。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

使用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版本进行克隆。