为什么不能通过SSH克隆Azure Dev Ops存储库?

时间:2019-01-12 00:19:45

标签: git azure-devops

我工作的组织在Azure Dev Ops中托管了一个git存储库。我可以访问此存储库,并且可以通过https克隆它。但是,我想改用ssh。在Azure Dev Ops的安全选项卡中,我已将计算机上.ssh文件夹中的公钥添加到我的帐户中。我没想到必须做任何进一步的事情,但是当我尝试克隆时,系统会提示我输入密码,这没想到。我用于https访问的密码不起作用。我的登录密码也没有,我结束的会话看起来像这样……

git clone myorg@vs-ssh.visualstudio.com:v3/myorg/my%20org%20project1.0/myrepo

Cloning into 'myrepo'...
myorg@vs-ssh.visualstudio.com's password:
Permission denied, please try again.
myorg@vs-ssh.visualstudio.com's password:
Permission denied, please try again.
myorg@vs-ssh.visualstudio.com's password:
myorg@vs-ssh.visualstudio.com: Permission denied (password,publickey).
fatal: Could not read from remote repository.

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

为什么要求输入密码?为什么拒绝访问?

2 个答案:

答案 0 :(得分:1)

在Windows上,如果使用非默认密钥(即非C:/users/username/.ssh/id_rsa),则必须运行Git for Windows安装中包含的脚本0,然后(和这是让我绊倒的部分),从同一外壳窗口复制存储库。我试图在第二个命令提示符窗口中运行clone命令,但没有获得ssh-add的好处。

查看ssh-add.cmd的内容,似乎可以通过设置一个临时SSH_AUTH_SOCK变量来工作,因此这很有意义。

答案 1 :(得分:0)

是的,这是克隆URL的问题。为了帮助Windows使用它的凭据管理器,他们在克隆URL中添加了var request = { params: { name : JSON.parse(localStorage.getItem('name')) } } const res = await axios.get(`http://localhost:8080/onlineshopping/view/category/products`,request); dispatch({ type: GET_CATEGORY_PRODUCTS, payload: res.data }); }; 。这样就变成了用户名。

如果您使用不带@RequestMapping(value = "/view/category/products") public Map<String, Object> viewProducts( @RequestParam(value = "name[]", required = false) List<String> name, HttpServletRequest request, HttpServletResponse response) { Map<String, Object> mapproducts = new HashMap<String, Object>(); for (String Str : name) { System.out.println("name " + Str); } 的克隆网址,则可能会起作用。