

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

# SSH キーのローテーション
<a name="keyrotation"></a>

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

**注記**  
Infrastructure as Code を使用した自動 SSH キーローテーションについては、「」を参照してください[Transfer Family Terraform モジュール](terraform.md)。

SSH キーのローテーションを実行するには、2 つの方法があります。
+ コンソールで新しい SSH パブリックキーをアップロードすると既存の SSH 公開キーを削除できます。
+ [DeleteSSHPublic](https://docs.aws.amazon.com//transfer/latest/APIReference/API_DeleteSshPublicKey.html) API を使用してユーザーの Secure Shell (SSH) パブリックキーを削除でき、[ImportSshPublicKey](https://docs.aws.amazon.com/transfer/latest/APIReference/API_ImportSshPublicKey.html) API を使用してユーザーのアカウントに新しいセキュアシェル (SSH) パブリックキー公開キーを追加すれば、API で既存のユーザーを更新できます。

------
#### [ Console ]

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

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

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

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

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

   または

   ユーザー名を選択して**ユーザーの詳細**ページを表示し、**SSHパブリックキーの追加**を選択して**キーの追加**ページを表示する。

1. 新しい SSH パブリックキーを入力し、[**Add key**] (キーを追加する) を選択します。
**重要**  
SSH 公開鍵の形式は、生成した鍵のタイプによって異なります。  
RSA キーの場合、形式は `ssh-rsa {{string}}` です。
ED25519 キーの場合、形式は `ssh-ed25519 {{string}}` です。
ECDSA キーの場合、生成したキーのサイズに応じてキーは`ecdsa-sha2-nistp256`、`ecdsa-sha2-nistp384`、または `ecdsa-sha2-nistp521` で始まります。他のキータイプと同様に、最初の文字列の後には `{{string}}` が続きます。

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

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

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

------
#### [ API ]

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

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

1.  次のコマンドを入力することで、削除したい SSH キーを取得します。このコマンドを使用するには、`{{serverID}}` を Transfer Family サーバーのサーバー ID に、`{{username}}` をユーザー名に置き換えます。

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

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

   ```
   "SshPublicKeys": [ { "SshPublicKeyBody": "{{public-key}}", "SshPublicKeyId": "{{keyID}}",
      "DateImported": 1621969331.072 } ],
   ```

1.  次に、ユーザー用の新しい SSH キーをインポートします。 プロンプトで次のコマンドを入力します。このコマンドを使用するには、`{{serverID}}` を Transfer Family サーバーのサーバー ID に、`{{username}}` をユーザー名に、`{{public-key}}` を新しい公開鍵のフィンガープリントに置き換えます。

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

   ``コマンドが成功した場合、出力は返りません。

1.  最後に、次のコマンドを実行して、古いキーを削除します。このコマンドを使用するには、`{{serverID}}` を Transfer Family サーバーのサーバー ID に、`{{username}}` をユーザー名に、`{{keyID-from-step-2}}` をこの手順のステップ 2 でコピーしたキー ID 値に置き換えます。

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

1. (オプション) 古いキーがもう存在しないことを確認するには、ステップ 2 を繰り返します。

------