こんにちは。EC2をこよなく愛する小國です。
Amazon Linux 2で使っていたキーペアでAmazon Linux 2023を立ち上げる機会があり、その際にSSH接続ができなくハマりました。
何番煎じか分かりませんが、その時の対処法のメモです。
TL;DR
- Amazon Linux 2023からRSAのSSH接続がデフォルトで無効になっている
- セッションマネージャーがあるよ!
- Amazon Linux 2023にSSH接続するなら、EC2起動前にAWSコンソールからED25519でキーペアを作成し、EC2起動時にキーペアを割り当てる
以下、既にEC2を起動してしまった方向けの内容になります。
Amazon Linux 2023ではRSA/SHA1がデフォルトで使えない
Amazon Linux 2で使っていたキーペアでAmazon Linux 2023を立ち上げたところエラーとなりSSH接続できませんでした(鍵を使いまわしたのは理由があってのたまたまです)。
SSH接続できない
1Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
セッションマネージャーでログインし、/var/log/secureを見ると以下のエラーが。。。
1Apr 25 15:10:57 ip-10-1-0-213 sshd[3101]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
対処方法
対処方法は以下があるかと思います。
- RSA/SHA1を利用するように(非推奨)
- その他のアルゴリズム(今回はキーペアで用意されているED25519)を利用する
- セッションマネージャーを使って接続
セッションマネージャーを利用するのがいいかと思うのですが、今回は理由あってキーペアで用意されているED25519を利用してのSSH接続をしてみます。
ED25519でキーペアを作成
AWSコンソールでED25519のキーペアを作成します。
プライベートキーから「ssh-keygen -y -f」でパブリックキーを取得しauthorized_keysに登録
キーペアを作成するとプライベートキーがダウンロードされます。ダウンロードしたファイルから「ssh-keygen -y -f」でパブリックキーを取得します。なお、手元の環境はMacです。
1ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem | pbcopy
パブリックキーを~/.ssh/authorized_keysに登録
セッションマネージャーでEC2に接続し、取得したパブリックキーを~/.ssh/authorized_keysに登録します。既にあるRSA/SHA1の鍵は必要なければ削除します。
ただ、この方法でパブリックキーを変更しても起動時に割り当てられたキーペアフィールドの値は変更されないようで、あらかじめキーペアを作成して起動がよいかと思います。
まとめ
Amazon Linux 2023はデフォルトでRSAのSSH接続ができないようになっています。今回はキーペアに用意されているED25519のSSH接続を行いましたが、今後は様々な恩恵を得られるセッションマネージャーを使っての接続が良いかと思います。
ということで、よいセッションマネージャーライフを!
参考サイト
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/describe-keys.html