git clone的兩種方式以及淺談加密(一)

一. 引言

今天使用git clone的時候由於沒有配置ssh 但是使用了ssh的clone命令,出了點問題。仔細研究了一下,還是挺有意思點,希望通過閱讀下面的內容能給大家帶來一些收穫。

二. git clone的兩種方式.

git clone分爲兩種方式,一種是通過ssh,還有一種是通過http(s)。

1. ssh

clipboard.png

在clone的時候可以選擇SSH,首先在命令行輸入 ssh-keygen -t rsa -b 40996 -C “郵箱” ,一路點擊確定,在本地生成.ssh文件,裏面有id_rsa(私鑰) id_rsa.pub(公鑰),將公鑰上傳到github上就可以直接免密與github進行文件傳輸了

// 在本地存在.ssh文件後
// 終端輸入
 $ cd ~/.ssh/
 $ cat id_rsa.pub
 $ ssh-rsa xxxxxxxxxxxxxxxxxxx yourAccount
// 複製上面出現的內容

在gitlab(github)-->個人賬戶-->setting-->ssh 將剛複製的公鑰粘貼
此時就完成了ssh設置,再clone就是免密的啦。

`這裏要提心一下,這時候clone的格式一定是

3.git clone git@xxxxxxxxxx`

2. HTTP

HTTP的方式比較簡單,就是 git clone 給定的url,然後輸入自己在gitlab(github)上相應的賬號就行了。
clipboard.png

3. ssh與HTTP方式的比較

想要比較他們之間的優缺點,首先要搞清楚爲什麼會這麼設計。
我個人認爲,項目一般分爲兩類,一類是團隊(個人)的項目,一類是開源的項目。
團隊(個人)項目,具有私有性。同時拉或者推爲了方便都應該不需要驗證。這就需要保證數據在傳輸中的私有與可靠。所以使用ssh這種RSA加密的方式。
開源項目,具備公有特性。一方面如果每個參與者的數據的拉取都進行加密解密的話,代價將會非常大。另外一個方面,對於衆多提交者,代碼應該由管理者去審覈是否merge,同時代碼也沒有必要所以沒有必要保持傳輸過場中的私有可靠。所以可以採用HTTP明文傳輸或者HTTPS也可以。

三. 加密

上面介紹了git clone 的兩種方式,探討了一下引入這兩種方式的原因,同時引入了加密這個該概念。

在密碼學中,加密(英語:Encryption)是將明文信息改變爲難以讀取的密文內容,使之不可讀的過程。只有擁有解密方法的對象,經由解密過程,才能將密文還原爲正常可讀的內容。

具體在前端中你至少要明白下面幾個概念:
公鑰、私鑰、RSA、數字證書、https與http的關係、TLS與SSL
我將在本篇文章和下篇文章爲大家一一道來

1. 對稱加密

對稱加密很簡單,就是明文經過密鑰轉化成密文,倘若我知道密鑰和密文,我也可以推出明文,典型的像是摩爾斯碼。所以在諜戰片中,我們經常看到特務找密碼本,就是因爲有了密碼本就可以破譯密文了。

2. 非對稱加密(RSA)

在對稱加密中,由於是直接傳遞的密鑰,密鑰容易被人竊取導致信息泄漏,

人們認識到,加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係即可,這樣就避免了直接傳遞密鑰。這種加密方式就叫做非堆成加密。

1977年,三位數學家Rivest、Shamir 和 Adleman 設計了一種算法,可以實現非對稱加密。這種算法用他們三個人的名字命名,叫做RSA算法。從那時直到現在,RSA算法一直是最廣爲使用的"非對稱加密算法"。毫不誇張地說,只要有計算機網絡的地方,就有RSA算法。

在RSA加密算法中,公鑰用於對數據進行加密,私鑰用於對數據進行解密
在RSA簽名算法中,私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。

3. ssh

ssh也是一種典型的非對稱加密的方式,本機產生id_rsa(私鑰) id_rsa.pub(公鑰),將公鑰上傳到github上。pull的時候公鑰用於對數據進行加密,私鑰用於對數據進行解密,push的時候私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。

4. 拓展

這裏再介紹一個部署項目的方法,比如我們開發項目,把項目託管到gitlab上,然後當我們上線的時候將本地文件上傳到服務器上。說實話這一步還是比較麻煩的。我們能不能讓gitlab和我們線上服務器通過ssh連接,當gitlab代碼更新到最新版本的時候,線上我只需要運行git pull 就自動完成文件的拉取和更新了。

總結

本文從git進行文件傳輸的兩種方式出發,介紹了部分加密的概念,希望對大家有所幫助。後面將像大家介紹剩餘的加密方面的概念

參考

加密-維基百科
RSA算法原理(一)
白話解釋 對稱加密算法 VS 非對稱加密算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章