Appearance
將 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
即可。