🦁
macOS Venturaからサーバへssh接続する際のエラーを解決
正月休み中にmacOS Venturaにアップデートしたマシンからいつも使っているサーバへ、ssh公開鍵認証で接続しようとしたらPermission deniedのエラーになりました。
これを解決したのでメモします。
エラーの内容
エラーはおおよそ以下のような内容です。
iMac20-27:~ paraches$ ssh paraches@paraches.com
paraches@paraches.com: Permission denied (publickey).
Permission denied
とあるので認証に失敗しています。
エラーの原因
macOS Venturaのsshのバージョンが上がり、今まで接続に使用していた”SHA-1ハッシュアルゴリズムを使用したRSA署名”が廃止されていたのが原因でした。
この変更はsshの8.8以降ですがmacOS Venturaのsshのバージョンは9.0p1です。
iMac20-27:~ paraches$ ssh -V
OpenSSH_9.0p1, LibreSSL 3.3.36
解決策
解決方法は大まかに2つ。
- 既存のrsaを使用し続ける
- 別の対応しているアルゴリズムを使う
どちらでも対応できますが、今回は別のアルゴリズムを使う方法にしました。
ED25519を使う
rsaよりも強力(なの?)なアルゴリズムのED25519を使って鍵を作成します。
やり方は基本的にrsaの時と同じです。
以下、その手順。
ED25519の鍵を作成
iMac20-27:~ paraches$ ssh-keygen -t ed25519
これでデフォルトなら~/.ssh
にid_ed25519
とid_ed25519.pub
が作成されます
作成した鍵をサーバへコピー
作成されたid_ed25519.pub
の内容をサーバのauthorized_keys
ファイルに書き加えます。
以上で今まで通りサーバへ接続できるようになりました。
既存のrsaを使い続ける
今回はこの方法は使用しませんでしたが、ED25519の鍵作成が面倒(!)と言う場合はこれでも。
rsaを使用できるようにsshのconfigファイルに設定する。
.sshフォルダにconfigファイルがあると思うので、そこの必要なサーバの設定に下記を加えます。
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
configファイルがない場合は作成して下記のようにすればOK。
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
Discussion