

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 輪換 SSH 金鑰
<a name="keyrotation"></a>

為了安全起見，我們建議輪換 SSH 金鑰的最佳實務。通常，此輪換會指定為安全政策的一部分，並以某種自動化方式實作。根據安全性層級，對於高度敏感的通訊，SSH 金鑰對只能使用一次。這樣做可消除任何因存放金鑰所帶來的風險。不過，將 SSH 登入資料存放一段時間，並設定不會對使用者造成過度負擔的間隔，會更為常見。常見的間隔是三個月。

**注意**  
如需使用基礎設施做為程式碼的自動 SSH 金鑰輪換，請參閱 [Transfer 系列 Terraform 模組](terraform.md)。

執行 SSH 金鑰輪換的方法有兩種：
+ 在 主控台上，您可以上傳新的 SSH 公有金鑰，並刪除現有的 SSH 公有金鑰。
+ 您可以使用 API 更新現有的使用者，方法是使用 [DeleteSshPublicKey](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 將新的 Secure Shell (SSH) 公有金鑰新增至使用者帳戶。

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

**在主控台中執行金鑰輪換**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 導覽至**伺服器**頁面。

1. 在**伺服器 ID** 欄中選擇識別符，以查看**伺服器詳細資訊**頁面。

1. 在**使用者**下，選取您要輪換其 SSH 公有金鑰之使用者的核取方塊，然後選擇**動作**，然後選擇**新增金鑰**以查看**新增金鑰**頁面。

   或

   選擇使用者名稱以查看**使用者詳細資訊**頁面，然後選擇**新增 SSH 公有金鑰**以查看**新增金鑰**頁面。

1. 輸入新的 SSH 公有金鑰，然後選擇**新增金鑰**。
**重要**  
SSH 公有金鑰的格式取決於您產生的金鑰類型。  
對於 RSA 金鑰，格式為 `ssh-rsa string`。
對於 ED25519 金鑰，格式為 `ssh-ed25519 string`。
對於 ECDSA 金鑰，金鑰開頭為 `ecdsa-sha2-nistp256`、 `ecdsa-sha2-nistp384`或 `ecdsa-sha2-nistp521`，取決於您產生的金鑰大小。開始字串後面接著 `string`，類似於其他金鑰類型。

   您會返回**使用者詳細資訊**頁面，而您剛輸入的新 SSH 公有金鑰會顯示在 **SSH 公有金鑰**區段中。

1. 選取您要刪除之舊金鑰的核取方塊，然後選擇**刪除**。

1. 輸入字詞 確認刪除操作`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。

------