Gitee ssh 公钥配置好后,仍然 permission denied 的排查过程及解决方法
突如其來
今天 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 里面將其開啟:
柳暗花明
我估計是某次系統更新的時候把原有的 RSA SHA-1 算法 deprecated 掉了。
按著上面說的,修改 ssh config 后保存,重新 git clone 一下,就可以正常使用了。
總結
以上是生活随笔為你收集整理的Gitee ssh 公钥配置好后,仍然 permission denied 的排查过程及解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 62, 63, 980
- 下一篇: leetcode 686. Repeat