この記事は Linux Advent Calendar 2022 の 7 日目の記事です。
起きた事象
Tera Term で Rocky9/RHEL9 に対して RSA 鍵で SSH 接続すると、ログインに失敗する。
同じ RSA 鍵を利用してコマンドプロンプトから ssh コマンドを実行すると、ログインに成功する。
> ssh -i ec2.pem rocky@xx.xx.xx.xx
Last login: Wed Dec 7 04:59:38 2022 from xx.xx.xx.xx
なぜか?
Rocky9/RHEL9 は OpenSSH に 8.7p1 バージョンを採用しており、RSA/SHA-1 がデフォルトで非推奨になっている。
参考 Think IT OpenSSH、今後はRSA/SHA1をデフォルトで無効に
SSH クライアントは RSA/SHA-256 などの、より強度の高い方式を利用する必要があるが、2022/12/07 時点では Tera Term はこれらに対応していない(次のリリースの Tera Term 4.107 で対応されるっぽい)。
参考 Tera Term チケット#36109 rsa-sha2-256, rsa-sha2-512公開鍵アルゴリズムのサポート
そのため Tera Term で Rocky9/RHEL9 に対して RSA 鍵で SSH 接続すると、ログインに失敗する。 この事象は RHEL9/Rocky9/CentOS Stream9/Alma9 などに限らず、OpenSSH の新しめのバージョンを採用している Ubuntu 22.04 などでも発生する(はず)。
対処方法
Tera Term の対応を待つ。
Tera Term 以外のクライアントからログインする。
どうしても Tera Term でログインしたい場合は、他のクライアントからログインしたあとに crypto-policies を DEFAULT:SHA1 に設定すれば、とりあえず動きそう(ただし、もろもろのセキュリティレベルが下がる)。
参考 Red Hat Enterprise Linux 9 > 3.9. SHA-1 を再度有効に
$ sudo update-crypto-policies --set DEFAULT:SHA1
Setting system policy to DEFAULT:SHA1
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
$ sudo shutdown -r now
追記
Tera Term が対応したようす。
Tera Term 5.0 と Tera Term 4.107 をリリースしました。https://t.co/F0jyELfyRy
— TeraTerm Project (@Tera_Term) October 15, 2023
Tera Term 5.0, Tera Term 4.107 とも、SSH の rsa-sha2 (RSA/SHA2) 対応が含まれています。
ssh-rsa (RSA/SHA1) がデフォルトで無効になった Ubuntu 22.04, RHEL 9, Amazon Linux 2023 へ RSA 鍵で接続できます。