EC2(Amazon Linux 2022)にターミナルソフトからSSH接続できない場合の対処方法

2021.12.09

困っていた内容

Amazon Linux 2022 でインスタンスを作成したところ、ターミナルソフトで EC2 インスタンスへ SSH 接続出来ません。どうすれば接続できますか?

どう対応すればいいの?

OpenSSHのリリースノートによると、OpenSSH 8.8よりssh-rsa(RSA/SHA1)での接続がデフォルトで無効になっています。

This release disables RSA signatures using the SHA-1 hash algorithm by default.

そのため、rsa-sha2-256/512(RSA/SHA2)に対応したターミナルソフトで rsa-sha2-256/512 利用の設定をするか、インスタンス側の OpenSSH 設定で ssh-rsa を許可する必要があります。

以前、OpenSSH 8.5 からデフォルトでssh-rsa(RSA/SHA1)が無効になると誤った記載をしておりました。混乱を招いたことお詫びいたします。 現在は記事を修正しております。

エラーの確認

今回テスト環境として用意した環境は以下となります。
AMI:al2022-ami-minimal-2022.0.20211201.0-kernel-5.10-x86_64
ターミナルソフト:RLogin(x64)Version 2.26.5

それでは、上記環境へRLoginの標準設定で接続しています。

エラーが発生しました。rsa-sha2-256/512 を使うようにと言われています。

ターミナルソフトの設定変更

では、rsa-sha2-256/512 で接続するように RLogin の設定を変更していきましょう。

  1. RLoginの編集画面で[プロトコル] > [RSA2認証鍵の署名方式を拡張(サーバーの対応が必要)]のプルダウンをクリックします
  2. SHA2-512(もしくは SHA2-256)を選択します
  3. [OK]をクリックします

再度接続

それでは、再度接続を試してみましょう

無事接続できました。

OpenSSH のバージョン確認

接続出来たので、OpenSSH のバージョンを確認してみましょう。

$ ssh -V
OpenSSH_8.6p1, OpenSSL 1.1.1l  FIPS 24 Aug 2021

OpenSSH 8.8 より前のバージョンですが、Amazon Linux 2022 では ssh-rsa での接続が無効化されているようですね。

許可設定を追加する方法を以下に記載しておきます。

(おまけ)ssh-rsa(RSA/SHA1)での接続を許可する方法

/etc/ssh/sshd_config

 PubkeyAcceptedAlgorithms=+ssh-rsa

の行を追加することにより、ssh-rsa(RSA/SHA1)でも接続することが可能になります。

※環境によっては「sshd_config」の場合もありますので、設定ファイルの場所と名前は環境に併せて読み替えてください。

最後に

今回は Amazon Linux 2022 で発生した事象にはなりますが、 OpenSSH のアップデートに伴い他の ディストリビューション でも起こり得る事象です。

ssh-rsa の許可設定をすることで ssh-rsa でも接続は可能ですが、セキュリティ上の問題もあるため、rsa-sha2-256/512 での接続をご検討ください。

ターミナルソフトについては、rsa-sha2-256/512 に非対応の場合もありますため、 利用しているターミナルソフトの対応状況をご確認ください。

参考までに、知名度の高い Tera Term では、現時点(2021/12/9)では rsa-sha2-256/512 非対応となっており、 今後対応予定となっておりました。

参考資料

'OpenSSH: RSA/SHA1 disabled by default' - MARC

OpenSSH: Release Notes

チケット #36109: rsa-sha2-256, rsa-sha2-512公開鍵アルゴリズムのサポート - Tera Term - OSDN