1. 程式人生 > 其它 >解決 “fatal: Could not read from remote repository.“

解決 “fatal: Could not read from remote repository.“

問題描述:

在使用Git將本地倉庫推送到遠端倉庫的時候,發生瞭如下錯誤:“fatal: Could not read from remote repository.”

問題原因:

出現這錯誤一般是以下兩種原因:

客戶端與服務端未生成 ssh key
客戶端與服務端的ssh key不匹配
為解決以上問題,我們需要重新生成一次ssh key ,並重新配置一下GitHub賬戶即可。

解決步驟:

1. 生成新的SSH key

大多數 Git 伺服器都會選擇使用 SSH 公鑰來進行受權。系統中的每一個使用者都必須提供一個公鑰用於受權,沒有的話就要生成一個。生成公鑰的過程在全部操做系統上都差很少。首先你要確認一下本機是否已經有一個公鑰。

cd ~/.ssh
ls

看一下有沒有id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之類成對的檔案),有 .pub 字尾的檔案就是公鑰
如果是客戶端與服務端未生成ssh key,那麼直接使用:ssh-keygen -t rsa -C "[email protected]" 生成新的rsa金鑰即可。
如果是客戶端與服務端的ssh key 不匹配,此時需要先將本地生成的 id_rsa以及id_rsa.pub這兩個檔案【一般在使用者名稱下的.ssh資料夾下】刪除掉,然後再使用上述指令生成新的rsa金鑰。

ssh-keygen -t rsa -C "[email protected]"

補充:ssh-keygen -t rsa -b 4096 -C "郵箱":這條命令的目的是為了讓本地機器ssh登入遠端機器上的GitHub賬戶無需輸入密碼。

ssh-keygen(基於密匙的安全驗證):需要依靠金鑰進行安全驗證,必須為自己建立一對金鑰,並把公用金鑰放在需要訪問的伺服器上。
-t 即指定金鑰的型別。金鑰的型別有兩種,一種是RSA,一種是DSA。
-b 指定金鑰長度。對於RSA金鑰,最小要求768位,預設是2048位。命令中的4096指的是RSA金鑰長度為4096位。DSA金鑰必須恰好是1024位(FIPS 186-2 標準的要求)。
-C 表示要提供一個新註釋,用於識別這個金鑰。“”裡面不一定非要填郵箱,可以是任何內容,郵箱僅僅是識別用的key。

2. 將SSH key 新增到 ssh-agent

使用 ssh-add ~/.ssh/id_rsa 將產生的新ssh key新增到ssh-agent中:

ssh-add ~/.ssh/id_rsa

補充: 如果出現“Could not open a connection to your authentication agent.”的錯誤可以使用以下兩種方式解決:

eval "$(ssh-agent -s)"

或者:

eval `ssh-agent`

然後再次執行 ssh-add ~/.ssh/id_rsa 指令。

3. 將SSH key 新增到你的GitHub賬戶

在賬戶選項中選擇 “Settings”–>“SSH and GPG keys”–>“New SSH key”,然後開啟之前新生成的id_rsa.pub檔案,將金鑰複製後填寫到賬戶中【注意填寫時的格式要求】
檢視生成的公鑰

cat ~/.ssh/id_rsa.pub

4. 驗證key

使用 ssh -T [email protected] 對ssh key 進行驗證:

ssh -T [email protected]


當出現上述介面時說明配置成功,此時可以再次執行git push 操作將本地倉庫推送到遠端。
注: 以上操作命令均在 Git Bash 中完成。