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

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

运行命令

ssh-keygen -C "yourEmailAddress"

tfs-vsts-ssh-keygen

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

~/.ssh/id_rsa
~/.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系统打交道的开发人员来说。

tfs-vsts-ssh-cmder

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

2. 上传public key到TFS/VSTS中

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

tfs-vsts-ssh-setup-001

然后选择 SSH Public Keys

tfs-vsts-ssh-setup-002

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

tfs-vsts-ssh-setup-003

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

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

tfs-vsts-ssh-clone

现在你就可以clone了

tfs-vsts-ssh-clone-001

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

tfs-vsts-ssh-clone-002

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

ssh-agent-start.cmd

就是这么简单,Happy Coding!


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

qrcode_for_gh_b7c158df1fd1_430