使用SSH连接TFS/VSTS的GIT仓库

开发 开发工具
无论你是使用什么样的操作系统或者git客户端,你都可以使用标准的ssh方式连接到TFS/VSTS的git仓库进行操作,同时借助ssh agent的帮助,避免在每次提交或同步代码的时候重复的输入密码,让你的git体验更加流畅。更为重要的是,因为ssh使用了public key的加密传输,这也让你的代码在传输过程中更为安全。

Team Foundation Server 从2013版本开始支持使用git作为代码库,Visual Studio Team Service也在同一时间支持git,但是TFS和VSTS对git的支持一直使用http/https作为传输协议,这让很多典型的git客户端无法很容易的连接到TFS/VSTS,比如Eclipse 里面的eGit插件。主要原因是微软的产品体系都是使用NTLM作为标准的身份认证方式,而git来自于世界的另一端Linux,对NTLM的支持一直都不好。当然,这个问题在使用了正确版本的Git Credential Manager的情况下是可以解决的,不过这不是这篇文章的重点。

现在,无论你是使用什么样的操作系统或者git客户端,你都可以使用标准的ssh方式连接到TFS/VSTS的git仓库进行操作,同时借助ssh agent的帮助,避免在每次提交或同步代码的时候重复的输入密码,让你的git体验更加流畅。更为重要的是,因为ssh使用了public key的加密传输,这也让你的代码在传输过程中更为安全。

使用ssh链接TFS/VSTS的git仓库非常简单,只需要3步:

1. 生成 public key

运行命令

  1. ssh-keygen -C "yourEmailAddress" 

这将为当前用户生成以下两个文件

  1. ~/.ssh/id_rsa 
  2. ~/.ssh/id_rsa.pub 

分别为你的private key(私钥)和public key(公钥),第一个文件你一定要保存好,因为这个文件内的密钥是数据解密用的。在下一步的配置中你需要把.pub文件中的public key内容复制到TFS/VSTS服务器上,服务器将使用这个key来加密所传输的数据,而你的private key则用来解密。如果有人获取了你的private key那么他就可以使用你的身份来解密这些信息。

当然,在执行ssh-keygen的过程中你会需要设置一个keypharse(密码),这是进一步保护你的私钥的方式,所以在这一步尽量不要使用空的keypharse。

注:如果你使用的是Windows,你可能找不到ssh-keygen这个工具。建议你安装cmder这个Windows命令行替代工具,这里面有非常丰富的命令行工具,特别是对于经常和linux系统打交道的开发人员来说。

官网地址:http://cmder.net/

不用佛跳墙的话会很慢,建议在公众号里面输入d4dtools,就可以获取网盘下载地址。

2. 上传public key到TFS/VSTS中

进入你的TFS/VSTS项目中,点击右上角你的用户名,然后选择 User Security;如果你用TFS,那么这个选项就在User Profile里面。

然后选择 SSH Public Keys

最后使用文本编辑器打开id_rsa.pub文件,将里面的内容复制到Key Data字段中,注意一定要复制所有内容,而且不要修改任何字符,否则会造成认证失败。

3. 获取ssh地址,并clone代码

进入你的repo中,点击右上角的clone按钮,选择ssh链接方式并复制链接

现在你就可以clone了

ssh会要求你输入之前配置的keypharse,然后clone就可以完成了

如果你使用的是macOS,系统会要求你吧KeyPharse加入key chain,这样以后在进行pull/push操作的时候就不用再次输入密码了。如果你使用的是Windows,你可以使用ssh agent达到同样的效果,只要执行

  1. ssh-agent-start.cmd 

就是这么简单,Happy Coding!

【本文为51CTO专栏作者“徐磊”的原创稿件,转载请通过作者微信公众号devopshub获取授权】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2017-03-01 08:56:28

VSTSTFSiOS

2017-02-14 20:15:15

docker容器持续交付

2011-08-09 10:20:55

GitLinux远程仓库

2022-04-14 06:16:07

Gitbase开源

2022-11-10 07:41:00

sshLinux

2010-03-18 15:10:54

VSTS 2010CodedUI Tes

2020-09-20 10:12:54

nccm

2020-12-11 22:16:34

Git远程仓库Linux

2021-06-02 08:00:00

MOSH开源工具

2021-09-29 11:46:05

远程服务器VSCode

2023-11-02 07:39:14

Git.NET代码

2021-03-14 09:37:45

Git仓库管理代码

2011-06-10 09:10:50

2017-03-13 13:21:34

Git处理大仓库

2013-08-12 14:23:43

SSH

2010-02-05 10:22:07

2016-08-05 12:58:44

GitLinux开源

2023-04-04 08:38:27

命令Git仓库

2019-04-08 08:50:02

2014-03-19 10:01:16

Git项目远端仓库
点赞
收藏

51CTO技术栈公众号