Skip to content

SSH Permission denied (publickey) 問題的新可能

將 macOS 升級至 Ventura 版本後發現有台遠端 server 無法使用 ssh 連上,顯示的錯誤訊息為:

Permission denied (publickey)

以往看到這條訊息,通常是 public key 沒有正確設定好在 server 上,但因為是連到一台經常在使用的 server,沒有換過 key,也確認過 server 上的 ~/.ssh/authorized_keys 與本地 public key 相符,排除掉這個可能後,使用 ssh -v 排錯找到一條關鍵訊息 send_pubkey_test: no mutual signature algorithm

發現問題的原因是 OpenSSH 8.8 以後的版本,預設會禁用 SHA-1 算法的 RSA 簽名,而 masOS 升級至 Ventura 版本後,OpenSSH 也被更新至 OpenSSH_9.0p1

一種「繞道」的方法是在 ~/.ssh/config 加入一行 PubkeyAcceptedKeyTypes +ssh-rsa,或是直接在 ssh 的連線指令加入參數:

bash
ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa username@address

如此就能夠使用原來的簽名算法成功連上遠端 server。

既然是因為安全問題被棄用,就順勢換個更安全的簽名算法,使用 ssh-keygen -t ed25519 產生新的 key,再把 public key 放到遠端 server 的 ~/.ssh/authorized_keys 即可。

Written By
YI FENG XIE
YI FENG XIE

Creative Problem Solver