使用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"
這將為當前用戶生成以下兩個文件
- ~/.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系統打交道的開發人員來說。
官網地址: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達到同樣的效果,只要執行
- ssh-agent-start.cmd
就是這么簡單,Happy Coding!
【本文為51CTO專欄作者“徐磊”的原創稿件,轉載請通過作者微信公眾號devopshub獲取授權】