輪換 SSH 金鑰 - AWS Transfer Family

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

輪換 SSH 金鑰

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

注意

如需使用基礎設施做為程式碼的自動 SSH 金鑰輪換,請參閱 Transfer 系列 Terraform 模組

執行 SSH 金鑰輪換的方法有兩種:

  • 在 主控台上,您可以上傳新的 SSH 公有金鑰,並刪除現有的 SSH 公有金鑰。

  • 您可以使用 API 更新現有的使用者,方法是使用 DeleteSshPublicKey API 刪除使用者的 Secure Shell (SSH) 公有金鑰,以及使用 ImportSshPublicKey API 將新的 Secure Shell (SSH) 公有金鑰新增至使用者帳戶。

Console
在主控台中執行金鑰輪換
  1. 在 https://https://console.aws.amazon.com/transfer/ 開啟 AWS Transfer Family 主控台。

  2. 導覽至伺服器頁面。

  3. 伺服器 ID 欄中選擇識別符,以查看伺服器詳細資訊頁面。

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

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

  5. 輸入新的 SSH 公有金鑰,然後選擇新增金鑰

    重要

    SSH 公有金鑰的格式取決於您產生的金鑰類型。

    • 對於 RSA 金鑰,格式為 ssh-rsa string

    • 對於 ED25519 金鑰,格式為 ssh-ed25519 string

    • 對於 ECDSA 金鑰,金鑰開頭為 ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521,取決於您產生的金鑰大小。開始字串後面接著 string,類似於其他金鑰類型。

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

  6. 選取您要刪除之舊金鑰的核取方塊,然後選擇刪除

  7. 輸入字詞 確認刪除操作delete,然後選擇刪除

API
使用 API 執行金鑰輪換
  1. 在 macOS、Linux 或 Unix 作業系統上,開啟命令終端機。

  2. 輸入下列命令,擷取您要刪除的 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 } ],
  3. 接著,為您的使用者匯入新的 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'

    如果命令成功,則不會傳回任何輸出。

  4. 最後,執行下列命令來刪除舊金鑰。若要使用此命令,請將 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'
  5. (選用) 若要確認舊金鑰不再存在,請重複步驟 2。