使用SSH連接TFS/VSTS的GIT倉庫
Team Foundation Server 從2013版本開始支持使用git作為代碼庫,Visual Studio Team Service也在同一時間支持git,但是TFS和VSTS對git的支持一直使用http/https作為傳輸協(xié)議,這讓很多典型的git客戶端無法很容易的連接到TFS/VSTS,比如Eclipse 里面的eGit插件。主要原因是微軟的產(chǎn)品體系都是使用NTLM作為標(biāo)準(zhǔn)的身份認(rèn)證方式,而git來自于世界的另一端Linux,對NTLM的支持一直都不好。當(dāng)然,這個問題在使用了正確版本的Git Credential Manager的情況下是可以解決的,不過這不是這篇文章的重點(diǎn)。
現(xiàn)在,無論你是使用什么樣的操作系統(tǒng)或者git客戶端,你都可以使用標(biāo)準(zhǔn)的ssh方式連接到TFS/VSTS的git倉庫進(jìn)行操作,同時借助ssh agent的幫助,避免在每次提交或同步代碼的時候重復(fù)的輸入密碼,讓你的git體驗(yàn)更加流暢。更為重要的是,因?yàn)閟sh使用了public key的加密傳輸,這也讓你的代碼在傳輸過程中更為安全。
使用ssh鏈接TFS/VSTS的git倉庫非常簡單,只需要3步:
1. 生成 public key
運(yùn)行命令
- ssh-keygen -C "yourEmailAddress"
這將為當(dāng)前用戶生成以下兩個文件
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
分別為你的private key(私鑰)和public key(公鑰),第一個文件你一定要保存好,因?yàn)檫@個文件內(nèi)的密鑰是數(shù)據(jù)解密用的。在下一步的配置中你需要把.pub文件中的public key內(nèi)容復(fù)制到TFS/VSTS服務(wù)器上,服務(wù)器將使用這個key來加密所傳輸?shù)臄?shù)據(jù),而你的private key則用來解密。如果有人獲取了你的private key那么他就可以使用你的身份來解密這些信息。
當(dāng)然,在執(zhí)行ssh-keygen的過程中你會需要設(shè)置一個keypharse(密碼),這是進(jìn)一步保護(hù)你的私鑰的方式,所以在這一步盡量不要使用空的keypharse。
注:如果你使用的是Windows,你可能找不到ssh-keygen這個工具。建議你安裝cmder這個Windows命令行替代工具,這里面有非常豐富的命令行工具,特別是對于經(jīng)常和linux系統(tǒng)打交道的開發(fā)人員來說。
官網(wǎng)地址:http://cmder.net/
不用佛跳墻的話會很慢,建議在公眾號里面輸入d4dtools,就可以獲取網(wǎng)盤下載地址。
2. 上傳public key到TFS/VSTS中
進(jìn)入你的TFS/VSTS項目中,點(diǎn)擊右上角你的用戶名,然后選擇 User Security;如果你用TFS,那么這個選項就在User Profile里面。
然后選擇 SSH Public Keys
最后使用文本編輯器打開id_rsa.pub文件,將里面的內(nèi)容復(fù)制到Key Data字段中,注意一定要復(fù)制所有內(nèi)容,而且不要修改任何字符,否則會造成認(rèn)證失敗。
3. 獲取ssh地址,并clone代碼
進(jìn)入你的repo中,點(diǎn)擊右上角的clone按鈕,選擇ssh鏈接方式并復(fù)制鏈接
現(xiàn)在你就可以clone了
ssh會要求你輸入之前配置的keypharse,然后clone就可以完成了
如果你使用的是macOS,系統(tǒng)會要求你吧KeyPharse加入key chain,這樣以后在進(jìn)行pull/push操作的時候就不用再次輸入密碼了。如果你使用的是Windows,你可以使用ssh agent達(dá)到同樣的效果,只要執(zhí)行
- ssh-agent-start.cmd
就是這么簡單,Happy Coding!
【本文為51CTO專欄作者“徐磊”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號devopshub獲取授權(quán)】