Red Hat Enterprise Linux 9 の SSH 鍵ペア仕様変更について

Red Hat Enterprise Linux 9 の SSH 鍵ペア仕様変更について

こんにちは。

今回は、 Red Hat Enterprise Linux 9 の SSH 鍵ペア仕様変更 についての備忘録です。 ※ 執筆時の Red Hat Enterprise Linux の最新は 9.1 です。

Red Hat Enterprise Linux 9 から SHA-1 メッセージダイジェストの使用が非推奨 になったようで、標準コマンドで鍵ペアを作成しても SSH ログインが失敗しました。

この解決までに時間がかかってしまいましたので備忘録をかねて記事にします。

Red Hat Enterprise Linux 9.0 における主な変更点

NG パターン

ターミナルを利用し作成したいユーザー ( ここでは user としています ) で ssh-keygen (オプションなし) コマンドを利用して鍵ペアを作成します。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:1FNf+u79dEu0jrWXBtGy4+LHB5UHUGw7orPYz4a9E+0 user@test
The key's randomart image is:
+---[RSA 3072]----+
|            o+. .|
|         . . .+o |
|        . o  .+o.|
|       .   ..oo=.|
|        S  . o=oo|
|          o .=o..|
|         o =oo++=|
|        . +o++E**|
|          .+*+o+*|
+----[SHA256]-----+

上記が Red Hat Enterprise Linux 9 デフォルトの ssh-keygen の動作です。 3072ビットが標準になっていますね。

鍵ペアを適切に設定し、秘密鍵をダウンロードしてターミナルから接続すると以下のように接続できません。

"Teraterm から接続失敗したときの画面"

Teraterm で接続失敗したときの画面

/var/log/secure を確認すると、 Dec 19 16:26:58 test sshd[88833]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

と出ていました。

このエラーを追いかけると以下の記事が見つかりました。 The issue was due to the disable of SHA1 on RHEL9. の一文から、 SHA-1 が非推奨になったことが影響している ようです。

[Red Hat Enterprise Linux9]sshd: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth] - Red Hat Customer Portal ※閲覧には Red Hat アカウントでログインが必要です。

OK パターン

マニュアルを参考にして、暗号アルゴリズムオプションに ECDSA ( 楕円曲線暗号 ) を指定して鍵ペアを作成します。

1.4. SSH 鍵ペアの生成 Red Hat Enterprise Linux 9 | Red Hat Customer Portal

$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_ecdsa
Your public key has been saved in /home/user/.ssh/id_ecdsa.pub
The key fingerprint is:
SHA256:8eZLUKKwX/Fi9ZFIC9vlEW5jGyqAwgqm/sLdhNUW+yw user@test
The key's randomart image is:
+---[ECDSA 256]---+
|        . . +.   |
| .   . . = * o   |
|..o o o B * X    |
|+. . + * O = =   |
|o   + o S = o    |
|.  . o E O       |
|... o . . o      |
| o.. .   . .     |
|  ..      .      |
+----[SHA256]-----+

同じく鍵ペアを適切に設定し、秘密鍵をダウンロードしてターミナルから接続すると、無事接続できました。

/var/log/secure にも正常に接続できたことが記録されていました。

Dec 19 16:53:28 test sshd[88955]: Accepted publickey for test from x.x.x.x port 60741 ssh2: ECDSA SHA256:8eZLUKKwX/Fi9ZFIC9vlEW5jGyqAwgqm/sLdhNUW+yw
Dec 19 16:53:28 test systemd[88958]: pam_unix(systemd-user:session): session opened for user test(uid=1001) by (uid=0)
Dec 19 16:53:28 test sshd[88955]: pam_unix(sshd:session): session opened for user test(uid=1001) by (uid=0)

あとがき

念のため、Red Hat カスタマーサポートに本現象について確認したところ以下のような回答が得られ、この方法がベストであることを確認しました。

Red Hat Enterprise Linux 9 において、SHA-1 によって生成されたダイジェストは、ハッシュ衝突の検出に基づく多くの攻撃の成功例が記録化されているため、安全であるとは見なされなくなり、非推奨になった。したがって、同様の事象発生時には、暗号アルゴリズムにオプションに ECDSAを利用し対応することでよい。

参考になれば幸いです。 それでは次回の記事でお会いしましょう。

norikazum