キーの管理 - AWS Transfer Family

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キーの管理

このセクションでは、SSH キーを生成する方法とローテーションする方法について説明します。

注記

AWS Transfer Family は、RSA、ECDSA、および ED25519 キーを受け入れます。

ユーザーキーとサーバーキーでサポートされているアルゴリズム

以下の主要なアルゴリズムが内部で使用できるようサポートされていますAWS Transfer Family。

  • ED25519 の場合:ssh-ed25519

  • RSA の場合:

    • rsa-sha2-256

    • rsa-sha2-512

  • ECDSA の場合:

    • ecdsa-sha2-nistp256

    • ecdsa-sha2-nistp384

    • ecdsa-sha2-nistp521

注記

古いセキュリティポリシー (を除くすべてのポリシーTransferSecurityPolicy-2022-03) については SHA1ssh-rsa でサポートしています。

SSH キーを生成する

サーバーをセットアップする際、サービスで管理された認証方法でユーザーを認証するよう設定できます。この方法では、ユーザー名と SSH キーは、サービスに保存されます。ユーザーのパブリック SSH キーは、ユーザーのプロパティとしてサーバーにアップロードされます。このキーは、キーベースの標準認証プロセスの一部としてサーバーによって使用されます。各ユーザーに対し、個々のサーバーに複数のパブリック SSH キーを登録できます。ユーザーごとに保存できるキーの数の制限については、AWS 全般リファレンスの「AWS サービスクォータ」を参照してください。

サービスマネージド認証方法の代わりに、カスタム ID プロバイダーを使用してユーザーを認証することもできます。これにより、Amazon API Gateway エンドポイントを使用して既存の ID プロバイダーをプラグインすることができます。詳細については、「API Gateway メソッドを使用した認証」を参照してください。

サーバーがユーザー認証に使用できる方法は 1 つのみ (サービスマネージドまたはカスタム ID プロバイダー) であり、サーバーの作成後にそのメソッドを変更することはできません。

macOS、Linux、または UNIX で SSH キーを作成する

macOS、Linux、または UNIX のオペレーティングシステムでは、ssh-keygen コマンドを使用して、キーペトと呼ばれる SSH パブリックキーと SSH プライベートキーを作成します。

注記

Windows で PuTTYgen を使用して SSH キーを作成する方法のチュートリアルは、SSH.com ウェブサイトにあります。

macOS、Linux、または UNIX のオペレーティングシステムで SSH キーを作成するには

  1. macOS、Linux、または UNIX でコマンドターミナルを開きます。

  2. AWS Transfer FamilyRSA、ECDSA、および ED25519 フォーマットのキーを受け付けます。生成するキーペアのタイプに基づいて適切なコマンドを選択します。

    • RSA 4096 ビットのkey pair を生成するには:

      ssh-keygen -t rsa -b 4096 -N "" -f key_name
    • ECDSA 521 ビットのキーペア (ECDSA のビットサイズは 256、384、521) を生成するには:

      ssh-keygen -t ecdsa -b 521 -N "" -f key_name
    • ED25519key pair を生成するには:

      ssh-keygen -t ed25519 -N "" -f key_name
    注記

    key_name は SSH キーペアファイル名です。

    ssh-keygen 出力の例を以下に示します。

    ssh-keygen -t rsa -b 4096 -N "" -f key_name Generating public/private rsa key pair. Your identification has been saved in key_name. Your public key has been saved in key_name.pub. The key fingerprint is: SHA256:8tDDwPmanTFcEzjTwPGETVWOGW1nVz+gtCCE8hL7PrQ bob.amazon.com The key's randomart image is: +---[RSA 4096]----+ | . ....E | | . = ... | |. . . = ..o | | . o + oo = | | + = .S.= * | | . o o ..B + o | | .o.+.* . | | =o*+*. | | ..*o*+. | +----[SHA256]-----+
    注記

    上記の ssh-keygen コマンドを実行すると、現在のディレクトリにパブリックキーとプライベートキーが作成されます。

  3. key_name.pub ファイルを見つけて開きます。

  4. テキストをコピーして、サービス管理ユーザーの SSH 公開鍵に貼り付けます

    1. https://console.aws.amazon.com/transfer で AWS Transfer Family コンソールを開いてからナビゲーションペインで [Servers] (サーバー) を選択します。

    2. サーバー」ページで、更新するユーザーを含むサーバーのサーバー ID を選択します。

    3. 公開鍵を追加するユーザーを選択します。

    4. SSH 公開鍵ペインで、「SSH 公開鍵を追加」を選択します。

      
                                        選択したユーザーのユーザー詳細を示す画像
    5. 生成した公開鍵のテキストを SSH 公開鍵テキストボックスに貼り付け、[Add key] を選択します。

      
                                        公開鍵を追加するための「鍵の追加」画面を示す画像

      新しいキーは SSH 公開キーペインに表示されます。

      
                                        新しく追加された公開鍵を示す画像

Microsoft Windows での SSH キーの作成

Windows で使用される SSH キーペア形式は、わずかに異なります。パブリックキーは PUB 形式、プライベートキーは PPK 形式である必要があります。Windows では、PuTTYgen を使用すれば正しい形式の SSH キーペアが作成できます。PuTTYgen を使用して、ssh-keygen で生成されたプライベートキーを .ppk ファイルに変換することもできます。

注記

WinSCP に .ppk 形式でないプライベートキーファイルを提示すると、そのクライアントによって .ppk 形式への変換が提案されます。

Windows で PuTTYgen を使用して SSH キーを作成する方法のチュートリアルは、SSH.com ウェブサイトにあります。

SSH キーのローテーション

セキュリティ上、ベストプラクティスとして SSH キーのローテーションをお勧めします。通常、このローテーションは、セキュリティポリシーの一部として指定され、自動化した形で実装されます。セキュリティのレベルに応じて、機密性の高い通信では、SSH キーペアが 1 回しか使用されない場合もあります。これにより、キーを保存することのリスクがなくなります。ただし一般的には、SSH 認証情報を一定期間にわたって保存し、その期間をユーザーに過度の負荷がかからないような長さに設定するのが普通です。標準的な設定は 3 か月です。

SSH キーのローテーションを実行するには、2 つの方法があります。

  • コンソールで新しい SSH パブリックキーをアップロードすると既存の SSH 公開キーを削除できます。

  • API を使用してユーザーの Secure Shell (SSH) パブリックキーを削除でき、DeleteSshPublicKeyAPI を使用してユーザーのアカウントに新しいセキュアキー追加すれば、ImportSshPublicKeyAPI を使用してユーザーの Secure Shell (SSH) パブリックキー公開キーを追加すれば、API で既存のユーザーを更新できます。

Console

コンソールでキーローテーションを実行するには

  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. [Servers] (サーバー) ページに移動します。

  3. [Server ID] (サーバー ID) 列で ID を選択すると、[Server Configuration] (サーバーの構成) ページが表示されます。

  4. [Users] (ユーザー) の下で、SSH パブリックキーをローテーションするユーザーのチェックボックスをオンにし、[Actions] (アクション) を選択してから [Add key] (キーの追加) を選択すると [Add key] (キーの追加) ページが表示されます。

    または

    ユーザー名を選択して表示される [User details] (ユーザーの詳細) ページで [Add SSH public key] (SSH パブリックキーの追加) を選択すると [Add key] (キーの追加) ページが表示されます。

  5. 新しい SSH パブリックキーを入力し、[Add key] (キーを追加する) を選択します。

    重要

    SSH 公開鍵の形式は、生成したキーのタイプによって異なります。

    • RSA キーの場合、形式はですssh-rsa <string>

    • ED25519 キーの場合、フォーマットはですssh-ed25519 <string>

    • ECDSA キーの場合、キーはecdsa-sha2-nistp256ecdsa-sha2-nistp384、生成したキーのサイズに応じてecdsa-sha2-nistp521、、またはで始まります。<string>他のキータイプと同様に、先頭の文字列の後にが続きます。

    [User details] (ユーザーの詳細) ページに戻ると、先ほど入力した SSH パブリックキーが [SSH public key] (SSH パブリックキー) セクションに表示されます。

  6. 削除したい古いキーのチェックボックスをオンにしてから [Delete] (削除) を選択します。

  7. delete という語を入力して削除オペレーションを確認してから [Delete] (削除) を選択します。

API

API を使用してキーローテーションを実行するには

  1. macOS、Linux、または UNIX でコマンドターミナルを開きます。

  2. 次のコマンドを入力することで、削除したい SSH キーを取得します。

    aws transfer describe-user --server-id='serverID' --user-name='username'

    ここで、serverIDは、Transfer Family サーバーのサーバー ID、username はユーザー名です。

    このコマンドは、ユーザーについての詳細を返します。"SshPublicKeyId": フィールドの内容をコピーします。後ほどこの値を入力する必要があります。

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. 次に、ユーザー用の新しい SSH キーをインポートします。プロンプトで、次のコマンドを入力します:

    aws transfer import-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-body='public-key'

    ここで、public key は、新しいパブリックキーのフィンガープリントです。コマンドが成功した場合、出力は返されません。

  4. 最後に、次のコマンドを実行して、古いキーを削除します。

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'

    ここで、KeyId-from-Step-2 は、この手順のステップ 2 でコピーしたキー ID 値です。

  5. (オプション) 手順 2 を繰り返して、古いキーがもう存在しないことを確認します。