突如其來
今天 git pull 一個老專案,之前一直提交的好好的,這次突然報錯 git@gitee.com: Permission denied (publickey).,明明是我自己的 repo,居然告訴我沒有權限??

無腦嘗試
一開始以為是本地 id_rsa.pub 變更導致 gitee 上原有的記錄失效,于是 ssh-keygen 命令重新生成了下,貼到 gitee 上,還是老樣子,
然后我懷疑我在折騰的時候改亂了 git 的配置,又重新 pacman -S git 強制 reinstall 了下,還是老樣子,
我又嘗試用 ssh 方式去 clone gitee 上的其他 repo 也是 permission denied,用 http 方式就沒問題,但是難道是 ~/.ssh 目錄下的檔案的鍋?于是我轉移陣地,到 github 上試了下,github 上可以正常 clone,暢通無阻,
奇了怪了,難道是 gitee 的 bug?于是,我開了兩個 terminal,左邊是一臺 ubuntu 的開發機,右邊是我本地,雙雙重新生成 ssh-key,重新貼到 gitee 上,重新 clone,一氣呵成,
然而,開發機上暢通無阻,本地無權限依舊…
蛛絲馬跡
后來看到,有人遇到過 ssh公鑰配置好后還是不能訪問到碼云網 問題,雖然作者沒有解決,但下面的回答提供了一種思路:ssh -Tvvv git@gitee.com 可以列印詳細的 log!
我在遠程和本地分別執行 ssh -Tvvv git@gitee.com,雖然和之前一樣,一邊是 successfully authenticated,一邊是 Permission Denied,但不同的是,這次有了更詳細的日志了!
不怕 error,就怕原因不明的 error,這下好辦了,兩邊日志一行一行對比,簡直看花了眼,終于在右側找到一些端倪:debug1: send_pubkey_test: no mutual signature algorithm
嗯?為啥?沒有這個簽名演算法??

撥云見日
既然已經發現 send_pubkey_test: no mutual signature algorithm,當然是問 google 啦,根據 SSH-RSA key rejected with message “no mutual signature algorithm” 中說的:

意思是說,RSA SHA-1 演算法已經過時了,如果你一定要用的話,可以在 ssh config 里面將其開啟:
# 編輯 ssh 組態檔
sudo vim /etc/ssh/ssh_config
# 添加以下內容
PubkeyAcceptedKeyTypes +ssh-rsa
柳暗花明
我估計是某次系統更新的時候把原有的 RSA SHA-1 演算法 deprecated 掉了,
按著上面說的,修改 ssh config 后保存,重新 git clone 一下,就可以正常使用了,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/347241.html
標籤:其他
