openSSH升級公鑰失效Permission denied (publickey)解決方案

蘭俊秋雨發表於2023-01-04

背景

centos系統升級openSSH後,伺服器上無法再拉取程式碼,報錯如下:

image.png

原因

伺服器重新安裝SSH後公鑰改變,需要重新安裝

ssh-keygen -t rsa -C "郵箱地址"

生成公鑰,刪除gitlab原有公鑰,但是git pull依然報錯如下:

image.png

依然提示公鑰有問題,沒有pull許可權

解決方案

1、刪除.ssh/known_hosts裡面的內容

image.png

2、如果重新生成公鑰還是沒法pull程式碼可能會有一下情況

3、8.8版本開始OpenSSH就不支援rsa加密演算法了,mac也是因為升級了OpenSSH,所以不支援rsa演算法

4、GitHub 透過在 2022 年 3 月 15 日刪除舊的、不安全的金鑰型別來提高安全性。

ssh-dss 自該日期起,不再支援 DSA 金鑰 ( )。您不能將新的 DSA 金鑰新增到您在 GitHub.com 上的個人帳戶。

2021 年 11 月 2 日之前的 RSA 金鑰 ( ssh-rsa ) valid_after 可以繼續使用任何簽名演算法。在該日期之後生成的 RSA 金鑰必須使用 SHA-2 簽名演算法。一些較舊的客戶端可能需要升級才能使用 SHA-2 簽名。

ssh-keygen -t ed25519 -C "<comment>"
注意:如果您使用的是不支援 Ed25519 演算法的舊系統,請使用:
ssh-keygen -t rsa -b 4096 -C "<comment>"

5、使用rsa演算法生成不支援的話改用ed25519的加密方式生成公鑰,配置後就可以了

以上是本人開發中遇到的問題,以及解決方案,如果幫助請選擇使用

相關文章