【EC2】Amazon Linux 2023にTeratermで接続できない?

【EC2】Amazon Linux 2023にTeratermで接続できない?
この記事をシェアする

はじめに

皆さんこんにちは、yyokotaです。
世間はすっかりクリスマス&年末ムードですね。皆さんはいかが過ごす予定でしょうか。
ちなみに恋人もいない私はクリスマスには引退馬を見に北海道に行く予定です。
師も走る師走、業務も多忙を極めるところかと存じますが、残り少し元気に乗り切りましょう!


今回の話題

今回は、題名の通り「AmazonLinux 2023ではTeratermから接続が出来ない」という現象について取りあげます。

EC2を利用する際に、SSH接続ツールとしてTeratermを利用している方が多いと思います。
かくいう私もTeratermを愛用しており、いつも通りEC2を立てSSHを許可しTeratermで接続しようとしたところ、、、

あれ?接続できない。

設定ミスか?と思い、セキュリティグループやNACLなど関連するネットワーク設定を見直しましたが、原因が分からず途方に暮れていたところ、どうやらAmazon Linux 2023に原因があるとのこと。
調べてみたところ学びがありましたので、この記事ではAmazon Linux 2023に加えられた変更とそれに伴うTeratermとの相性問題、および解決方法までを取り上げます。

TL;DR

  • Amazon Linux 2023では、デフォルトでSSH-RSA署名が無効化されている
  • Teraterm 4.0では、SSH-RSA署名の代わりに有効化されているrsa-sha2-256、rsa-sha2-512が利用できないため接続ができない
  • Teraterm 5.0を使う、もしくはSSH-RSA署名を有効化することが対処法になるが、後者はセキュリティ上の懸念から推奨されない

発生環境

  • OS: Windows10
  • Teraterm: Ver 4.106

発生する現象

  1. Amazon Linux 2023のAMIを利用し、EC2をパブリックサブネットに新規作成する。
  2. EC2には、SSH接続に必要な通信を許可したセキュリティグループを付与する。
  3. ローカルでTeraterm 4.106を起動し、EC2へSSH接続を試みる
  4. 認証に失敗しました。再試行してください」という文言とエラーが発生し接続できない

原因

AmazonLinux2023では、SSH-RSA署名による接続が無効化されていることが原因です。
Default SSH server configuration

調べてみたところ、OpenSSHのリリースノートに記載がありました。
記載内容としては以下の通りです。

  • OpenSSHはSHA-1ハッシュアルゴリズムを使用したRSA署名を無効にした
  • この変更はSHA-1が暗号的に安全でないためであり、ハッシュ衝突のリスクがあるため
  • 多くのユーザーにとっては目立たない変更であり、OpenSSHはRFC8332に基づき、リリース7.2以降RSA/SHA-256/512署名をサポート
  • 既存のssh-rsa鍵は自動的により強力なアルゴリズムを使用する
  • 互換性の問題は古いSSH実装に接続する場合に生じる
  • RSA/SHA1を選択的に再度有効にすることが必要になる場合がある
  • 例として、~/.ssh/configに特定の設定を記述することで、特定のホストに対してRSA/SHA1を有効にすることができる
  • RSA/SHA1を有効にするのは一時的な措置として推奨され、レガシー実装がアップグレードされるか、他の鍵タイプ(ECDSAやEd25519など)で再設定されるまでの間のみとする

つまり、SSH-RSA署名にはセキュリティリスクがあるため無効化されることが推奨されており、それに従ってAmazon Linux2023もSSH-RSAを無効化したと考えられます。
また、ここにも書かれている通り互換性の問題から、Teratermでの接続にも問題が発生していると捉えるべきでしょう。

対処

さて、ここまで原因を調べてきましたがとはいえSSH接続しない選択肢はないのでどのように対処するかを考えます。

考えられるケースは以下の2つでしょうか。

  1. サーバ側の設定でSSH-RSA署名を有効化する
  2. rsa-sha2-256など、Amazon Linux2023で有効化されている署名アルゴリズムを利用する

サーバ側の設定で、SSH-RSA署名を有効化する

結局、この事象は鍵交換における署名アルゴリズムの問題で発生するので、サーバ側の設定を変えてあげれば解決します。
具体的には、AWSドキュメントで示されている通り以下の手順を踏めばよいです。

  1. crypto-policies-scriptsをインストールする
sudo dnf install crypto-policies-scripts
  1. ポリシーをレガシーに設定する
sudo update-crypto-policies --set LEGACY
  1. SSH-RSAが有効化されていることを確認する
# cat /etc/crypto-policies/back-ends/opensshserver.config
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc,3des-cbc
MACs hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512
GSSAPIKexAlgorithms gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1-
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1
HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com,ssh-dss,ssh-dss-cert-v01@openssh.com
PubkeyAcceptedAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com,ssh-dss,ssh-dss-cert-v01@openssh.com
CASignatureAlgorithms ecdsa-sha2-nistp256,sk-ecdsa-sha2-nistp256@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,sk-ssh-ed25519@openssh.com,rsa-sha2-256,rsa-sha2-512,ssh-rsa,ssh-dss

これでSSH-RSAが有効化されました。

しかし、確かに接続はできるようになるのですが結局これはセキュリティ上の懸念を抱えたままであり、先ほどのOpenSSHのリリースノートにあった

RSA/SHA1を有効にするのは一時的な措置として推奨

が満たされません。
これを利用するのは非推奨となるため、使うとしてもあくまで対処法が確立されるまでの間に限定することをお勧めします。

rsa-sha2-256など、Amazon Linux2023で有効化されている署名アルゴリズムを利用する

対処法としては、こちらが推奨です。

Teraterm では 5.0 beta 1 のバージョンから、 rsa-sha2-256 および rsa-sha2-512 プロトコルがサポートされています。

Teraterm 5.0 beta1

変更
SSH2 の rsa-sha2-256, rsa-sha2-512 ホスト鍵方式をサポートした。
SSH2 の rsa-sha2-256, rsa-sha2-512 公開鍵認証をサポートした。
SSH鍵生成ダイアログの RSA 鍵のデフォルトの長さを 3072bit に変更した。
キープアライブパケットの送信間隔のデフォルトを 300 秒に変更した。

これによって、Teraterm を Ver5.0 beta1 upper にアップデートすることにより、サーバに変更を加えることなくSSH接続を実現できるようになっています。

以下の手順で実際に試してみましょう。

  1. 通常通り、Amazon Linux2023をAMIとしてEC2を起動します。
  2. キーペアには、RSAを利用して新規作成します。
  3. EC2に必要な通信許可を行い、Teraterm ver5.0 beta1から接続します。
  4. たしかに、正常にSSH接続できることが確認できます。

またこのケースでは新しくEC2を作成しましたが、既に作成されているEC2に対して登録されているキーペアを変更する必要はありません
運用上の負荷も低いので、こちらのほうが対処として楽でしょう。

まとめ

Amazon Linux2023は、セキュリティ上の理由からTeraterm 4.0台での接続が出来ない、そして5.0台では接続が出来ることをご認識頂けたかと思います。
そのうえで、実際にAmazon Linux2023を利用するのか、利用する場合にはどのようにしてSSHの通信を許可するのか…etc、様々な要素を吟味したうえでご利用になることをお勧めいたします。

この記事をシェアする
著者:yyokota
2023/5/30 AWS All Certification 元コンサル・エンジニア見習い