今天使用git clone的時候因爲沒有配置ssh 可是使用了ssh的clone命令,出了點問題。仔細研究了一下,仍是挺有意思的,特地記錄下來能給你們帶來一些收穫。html
git clone分爲兩種方式,一種是經過ssh,還有一種是經過http(s)。前端
在clone的時候能夠選擇SSH,首先在命令行輸入git
ssh-keygen -t rsa -C 「email」 //這裏 -c是建立別名,通常網站都喜歡用郵箱
一路點擊肯定,在本地生成.ssh文件,裏面有id_rsa(私鑰) id_rsa.pub(公鑰),將公鑰上傳到github上就能夠直接免密與github進行文件傳輸了github
// 本地存在.ssh文件後 // 終端輸入 $ cd ~/.ssh/ $ cat id_rsa.pub $ ssh-rsa xxxxxxxxxxxxxxxxxxx yourEmail // 複製上面出現的內容
在gitlab(github)-->我的帳戶-->setting-->ssh 將剛複製的公鑰粘貼
此時就完成了ssh設置,再clone就是免密的啦。算法
這裏要提心一下,這時候clone的格式必定是 git clone git@xxxxxxxxxx
segmentfault
HTTP的方式比較簡單,就是 git clone 給定的url,而後輸入本身在gitlab(github)上相應的帳號就好了。安全
想要比較他們之間的優缺點,首先要搞清楚爲何會這麼設計。
我我的認爲,項目通常分爲兩類,一類是團隊(我的)的項目,一類是開源的項目。
團隊(我的)項目,具備私有性
。同時拉或者推爲了方便
都應該不須要驗證。這就須要保證數據在傳輸中的私有與可靠。
因此使用ssh協議(以非對稱加密實現身份驗證)。
開源項目,具有公有特性
。一方面若是每一個參與者的數據的拉取都進行加密解密的話,代價將會很是大。另一個方面,對於衆多提交者,代碼應該由管理者去審覈是否merge,同時代碼也沒有必要保持傳輸過程當中的私有可靠。因此能夠採用HTTP明文傳輸或者HTTPS也能夠。服務器
在密碼學中,加密(英語:Encryption)是將明文信息改變爲難以讀取的密文內容,使之不可讀的過程。只有擁有解密方法的對象,經由解密過程,才能將密文還原爲正常可讀的內容。
具體在前端中你至少要明白下面幾個概念:
公鑰、私鑰、RSA、數字證書、https與http的關係、TLS與SSL
我將在本篇文章和下篇文章爲你們一一道來網絡
對稱加密很簡單,就是明文通過密鑰轉化成密文,假若我知道密鑰和密文,我也能夠推出明文,典型的像是摩爾斯碼。因此在諜戰片中,咱們常常看到特務找密碼本,就是由於有了密碼本就能夠破譯密文了。ssh
在對稱加密中,因爲是直接傳遞的密鑰,密鑰容易被人竊取致使信息泄漏,
人們認識到,加密和解密可使用不一樣的規則,只要這兩種規則之間存在某種對應關係便可,這樣就避免了直接傳遞密鑰。這種加密方式就叫作非對稱加密。
1977年,三位數學家Rivest、Shamir 和 Adleman 設計了一種算法,能夠實現非對稱加密。這種算法用他們三我的的名字命名,叫作RSA算法
。從那時直到如今,RSA算法一直是最廣爲使用的"非對稱加密算法"。絕不誇張地說,只要有計算機網絡的地方,就有RSA算法。
在RSA加密算法中,公鑰用於對數據進行加密,私鑰用於對數據進行解密
在RSA簽名算法中,私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。
ssh是一個安全協議,以非對稱加密實現身份驗證。,本機產生id_rsa(私鑰) id_rsa.pub(公鑰),將公鑰上傳到github上。pull的時候公鑰用於對數據進行加密,私鑰用於對數據進行解密,push的時候私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。
這裏再介紹一個部署項目的方法,好比咱們開發項目,把項目託管到gitlab上,而後當咱們部署項目的時候將本地文件上傳到服務器上。說實話這一步仍是比較麻煩的。咱們其實可讓gitlab和咱們線上服務器經過ssh鏈接,當gitlab代碼更新到最新版本的時候,服務器上我只須要運行git pull 就能夠自動完成文件的拉取、更新以及項目的部署了。
本文從git進行文件傳輸的兩種方式出發,介紹了部分加密的概念,但願對你們有所幫助。後面將像你們介紹剩餘的加密方面的概念