UbuntuやCentOS Stream 9などのオペレーティングシステムを実行するElastic Compute Service (ECS) インスタンスがある場合、Rivest Shamir Adleman (RSA) キーを使用して、特定の種類のSSHクライアント (FinalShellやnuoshellクライアントなど) からインスタンスに接続できない場合があります。 このトピックでは、このようなRSAキーベースの接続障害を解決する方法について説明します。
背景情報
RSAは、公開鍵暗号化用に設計された非対称アルゴリズムであり、電子商取引で広く使用されている。 非対称アルゴリズムは、公開鍵および秘密鍵からなる鍵対の使用を必要とする。 公開鍵および秘密鍵は、アルゴリズムに基づいて生成される。 デフォルトでは、ECSで作成されたキーペアはRSA暗号化を使用します。 詳細については、「概要」をご参照ください。
Ubuntu 22.04インスタンスへのRSAキーベースの接続障害
SSHプロトコルでは、ssh − rsa署名方式は、RSA公開鍵アルゴリズムと共にSHA − 1ハッシュアルゴリズムを使用する。 SHA-1ハッシュアルゴリズムは攻撃に対して脆弱です。 ssh-rsa署名スキームは、8.7の次のリリース以来、OpenSSHで廃止されています。
ssh-rsa署名スキームの廃止は、RSAキーの使用を停止する必要はありません。 キーは複数のアルゴリズムを使用して署名できます。 特に、RSA鍵は、rsa-sha2-256 (RSA/SHA256) 、rsa-sha2-512 (RSA/SHA512) 、およびssh − rsa (RSA/SHA1) を使用して署名することができる。 ssh-rsa (RSA/SHA1) のみがデフォルトで無効になっています。
問題の説明
RSAキーを使用してSSHクライアント (FinalShellやnuoshellクライアントなど) からUbuntu 22.04インスタンスに接続しようとすると、SSHクライアントは接続失敗と次のsshdログデータを返します。
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
原因
最新のオペレーティングシステムバージョンでは、OpenSSHはデフォルトでssh-rsa署名スキームをサポートしなくなり、この署名スキームを使用すると接続障害が発生します。 ただし、FinalShellやnuoshellクライアントなどの特定のタイプのSSHクライアントは、デフォルトでssh-rsa (RSA/SHA1) のみをサポートし、rsa-sha2-256 (rsa/SHA256) またはrsa-sha2-512 (rsa/SHA512) と互換性がありません。 その結果、これらのタイプのSSHクライアントを使用してインスタンスに接続することはできません。
解決策
次のいずれかの方法を使用して、問題を解決できます。
方法1: 楕円曲線デジタル署名アルゴリズム (ECDSA) またはデジタル署名アルゴリズム (DSA) 暗号化などの異なる暗号化方法を使用する。
方法2: Alibaba Cloudが提供するWorkbenchなど、異なるタイプのSSHクライアントを使用してインスタンスに接続します。 Workbenchを使用してインスタンスに接続する方法の詳細については、「接続方法の概要」をご参照ください。
方法3: 次のコマンドを実行して、sshd設定でssh-rsa (RSA/SHA1) を使用できるようにします。
重要ssh-rsa (RSA/SHA1) はセキュリティリスクをもたらす可能性があります。 注意して進めてください。
echo 'PubkeyAcceptedAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config systemctl restart sshd
CentOS Stream 9インスタンスまたは別のオペレーティングシステムバージョンを実行するインスタンスへのRSAキーベースの接続障害
影響を受けるオペレーティングシステムのバージョン
CentOSストリーム9
AlmaLinux 9
ロッキーLinux 9
レッドハットエンタープライズLinux 9
Fedora 33以降
問題の説明
RSAキーを使用してSSHクライアント (FinalShellまたはnuoshellクライアントなど) からインスタンスに接続しようとすると、SSHクライアントは接続失敗と次のsshdログデータを返します。
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
原因
デフォルトでは、CentOS Stream 9オペレーティングシステムはdefault暗号化ポリシーを使用します。 このポリシーは、openssh-serverのssh-rsa (RSA/SHA1) を無効にします。 ただし、FinalShellやnuoshellクライアントなどの特定のタイプのSSHクライアントは、デフォルトでssh-rsa (RSA/SHA1) のみをサポートし、rsa-sha2-256 (rsa/SHA256) またはrsa-sha2-512 (rsa/SHA512) と互換性がありません。 その結果、これらのタイプのSSHクライアントを使用してインスタンスに接続することはできません。
update-crypto-policies -- show
コマンドを実行して、現在のシステム暗号化ポリシーを表示できます。
解決策
次のいずれかの方法を使用して、問題を解決できます。
方法1: ECDSAまたはDSA暗号化などの異なる暗号化方法を使用する。
方法2: Alibaba Cloudが提供するWorkbenchなど、異なるタイプのSSHクライアントを使用してインスタンスに接続します。 Workbenchを使用してインスタンスに接続する方法の詳細については、「接続方法の概要」をご参照ください。
方法3: 次のコマンドを実行して、暗号ポリシーをLEGACYレベルに切り替えます。
重要LEGACYポリシーは、未知のセキュリティリスクをもたらす可能性があります。 注意して進めてください。
update-crypto-policies --set LEGACY update-crypto-policies --show