git在進行同步倉庫時,采用的SSH(Secure Shell)安全外殼協議,ssh的加密算法基于RSA,即非對稱加密。所以當和git服務器通過ssh通信的時候需要向git服務器提前上傳RSA的公鑰,便與git服務器確認我們的身份。因為,我們用私鑰加密信息,對方用公鑰解密,而私鑰只有我們有(私鑰唯一性),所以對方只要能用公鑰進行解密,若信息格式滿足協議要求,就代表此信息是使用與公鑰相匹配的私鑰進行加密的,也就代表信息是我們上傳的(信息的簽名)。
今天,使用git上傳信息時突然提示權限拒絕,這就是說明我們沒有向git同步的權限。整體來看,是RSA的公鑰和私鑰出現了問題。
Snip20170319_2.png
解決辦法:重新生成公鑰,并將其上傳至Github.
$ cd ~/.ssh
$ ssh-keygen -t rsa -C “wanghanfeng3@gmail.com” #填寫github上的默認郵箱
不需要設密碼的話直接三個回車。
得到 id_rsa 和 id_rsa.pub 兩個文件, id_rsa是RSA的私鑰文件,id_rsa.pub是RSA的公鑰文件。
將id_rsa.pub文件中的內容完整復制到Github的個人設置=》SSH and GPG keys中。
問題解決。