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 署名スキームは、SHA-1 ハッシュアルゴリズムと RSA 公開鍵アルゴリズムを一緒に使用します。 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] // userauth_pubkey: キータイプ ssh-rsa が 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 ベースの接続については、「Workbench を使用してインスタンスに接続する」をご参照ください。
方法 3: 次のコマンドを実行して、sshd 構成で ssh-rsa (RSA/SHA1) の使用を許可します。
重要ssh-rsa (RSA/SHA1) はセキュリティリスクを引き起こす可能性があります。注意して進めてください。
echo 'PubkeyAcceptedAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config systemctl restart sshd // sshd を再起動します
CentOS Stream 9 インスタンスまたは別のオペレーティングシステムバージョンを実行しているインスタンスへの RSA キーベースの接続エラー
影響を受けるオペレーティングシステムバージョン
CentOS Stream 9
AlmaLinux 9
Rocky Linux 9
Red Hat Enterprise Linux 9
Fedora 33 以降
問題の説明
RSA キーを使用して SSH クライアント (FinalShell や nuoshell クライアントなど) からインスタンスに接続しようとすると、SSH クライアントは接続エラーを返し、次の sshd ログデータが表示されます。
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth] // userauth_pubkey: キータイプ ssh-rsa が PubkeyAcceptedAlgorithms にありません [preauth]原因
デフォルトでは、ssh-rsa (RSA/SHA1) は CentOS Stream 9 では無効になっています。ただし、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 を使用してインスタンスに接続する方法の詳細については、「ECS インスタンスへの接続方法」をご参照ください。
方法 3: 次のコマンドを実行して、暗号化ポリシーを LEGACY レベルに切り替えます。
重要LEGACY ポリシーは、未知のセキュリティリスクを引き起こす可能性があります。注意して進めてください。
update-crypto-policies --set LEGACY update-crypto-policies --show // 暗号化ポリシーを表示します