🦁

macOS Venturaからサーバへssh接続する際のエラーを解決

2023/01/29に公開

正月休み中に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

これでデフォルトなら~/.sshid_ed25519id_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