問題描述:
在實操中,git push代碼到github上一直提示輸入用戶名及密碼,並且跳出的輸入框輸入用戶名和密碼后,報錯找不到遠程倉庫
實際解決中,發現我環境有兩個問題解決:
- git push一直提示輸入用戶名及密碼
- “fatal: Could not read from remote repository”
問題1
原因:
是因為git使用https協議,每次pull, push都要輸入密碼,而如果采用ssh協議
(當使用了http的方式clone代碼到本地,相應的,也是使用http的方式將代碼push到服務器,就出現這個問題)
解決方式:
解決辦法很簡單,將http方式改為ssh方式即可;先移除舊的http的origin,在添加新的ssh方式的origin
改動完之后直接執行git push是無法推送代碼的,需要設置一下上游要跟蹤的分支,與此同時會自動執行一次git push命令,此時已經不用要求輸入用戶名及密碼啦!
git push --set-upstream origin master
但在這里碰到了我的問題2
問題2
原因:
出現這錯誤一般是以下兩種原因:
- 客戶端與服務端未生成 ssh key
- 客戶端與服務端的ssh key不匹配
我的問題是不匹配,需要重新生成一次ssh key ,並重新配置一下GitHub賬戶即可
解決方式:
-
生成新的SSH key
如果是客戶端與服務端未生成ssh key,那么直接使用:ssh-keygen -t rsa -C "youremail@example.com"
生成新的rsa密鑰即可。
如果是客戶端與服務端的ssh key 不匹配,此時需要先將本地生成的 id_rsa以及id_rsa.pub這兩個文件【一般在用戶名下的.ssh文件夾下】刪除掉,然后再使用上述指令生成新的rsa密鑰;
上面命令的目的是為了讓本地機器ssh登錄遠程機器上的GitHub賬戶無需輸入密碼。
-
將SSH key 添加到 ssh-agent
使用ssh-add ~/.ssh/id_rsa
將產生的新ssh key添加到ssh-agent中:
但我出現“Could not open a connection to your authentication agent.”的錯誤,這個使用以下方式解決:
eval "$(ssh-agent -s)"
然后再次執行 ssh-add ~/.ssh/id_rsa
指令。
3. 將SSH key 添加到你的GitHub賬戶
在賬戶選項中選擇 “Settings”–>“SSH and GPG keys”–>“New SSH key”,然后打開之前新生成的id_rsa.pub文件,將密鑰復制后填寫到賬戶中【注意填寫時的格式要求】
4. 驗證key
使用 ssh -T git@github.com
對ssh key 進行驗證: