Clone
Clone可以使用HTTPS或SSH協議
如果使用SSH克隆項目,需要做以下配置。
1. 打開Git bash
2. 執行命令:ssh-keygen -t rsa ,之后有Y/N的選擇,一直按回車即可
3. 在執行的路徑下生成兩個文件id_rsa(私鑰), id_rsa.pub(公鑰)
4. 打開id_rsa.pub文件,復制里面的全部內容,然后到GitHub或Gitlab網頁,點擊自己的用戶頭像,點擊setting,找到SSH的一項,new一個SSH key,再把復制的內容粘貼即可。
5. 之后就可以使用SSH的方式克隆項目了。
SSH擴展
ssh(安全外殼協議)為 Secure Shell 的縮寫,它是專為遠程登錄會話(例如Windows遠程登錄Linux服務器)和其他網絡服務提供安全性的協議,可有效彌補網絡中的漏洞。通過SSH,可以把所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。目前已經成為Linux系統的標准配置。
SSH的安全機制
SSH之所以能夠保證安全,原因在於它采用了非對稱加密技術(RSA)加密了所有傳輸的數據。
傳統的網絡服務程序,如FTP、Pop和Telnet其本質上都是不安全的;因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一台機器冒充真正的服務器接收用戶傳給服務器的數據,然后再冒充用戶把數據傳給真正的服務器。
但並不是說SSH就是絕對安全的,因為它本身提供兩種級別的驗證方法:
第一種級別(基於口令的安全驗證):只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人攻擊”這種方式的攻擊。
第二種級別(基於密鑰的安全驗證):你必須為自己創建一對密鑰,並把公鑰放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密鑰進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公鑰,然后把它和你發送過來的公鑰進行比較。如果兩個密鑰一致,服務器就用公鑰加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私鑰在本地解密再把它發送給服務器完成登錄。與第一種級別相比,第二種級別不僅加密所有傳輸的數據,也不需要在網絡上傳送口令,因此安全性更高,可以有效防止中間人攻擊。
在Git使用SSH克隆項目就屬於第二種級別。
RSA算法屬於非對稱加密算法。
RSA公開密鑰密碼體制是一種使用不同的加密密鑰與解密密鑰,“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。
算法原理:RSA公開密鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
自己的理解
在網上搜索了許多有關非對稱加密算法的文章,也略懂了一些原理,這里記下自己的理解。
非對稱加密算法是通過一組數學算式實現的,由於脫離數學太久,一些數學符號、術語早已忘記,大概就是通過質數的相乘和什么因式分解實現的。
換成自己的理解就是:
例如有一道數學題137 X 753=?我們很容易就可以算出來。
137 X 753=103161
但是要算103161是由哪2個整數(非自身與1相乘)相乘得來的就困難了許多。
隨着2個乘數越大,結果越大,因式分解也就越難求(不知道是不是叫因式分解,你懂我意思嗎,我向你敬禮,色鹿)
所以,RSA算法的保密強度隨其密鑰的長度增加而增強。但是,密鑰越長,其加解密所耗用的時間也越長。因此,要根據所保護信息的敏感程度與攻擊者破解所要花費的代價值不值得以及系統所要求的反應時間來綜合考慮,尤其對於商業信息領域更是如此。
還可以這么理解,公鑰就像是鎖頭,私鑰就像是鑰匙,掛在門口上的鎖頭是公開的,鑰匙是自己才有的。想一想現實中配鑰匙,都是帶着鑰匙去配的,而不是帶着鎖頭去配,根據公鑰來推導私鑰,難度很大。