金鑰管理 - 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

注意

我們支持ssh-rsa使用 SHA1 表示我們較舊的安全策略(所有策略除外TransferSecurityPolicy-2022-03

產生 SSH 金鑰

您可以將伺服器設定為使用服務管理的驗證方法來驗證使用者,其中使用者名稱和 SSH 金鑰會儲存在服務中。使用者的公開安全殼層金鑰會作為使用者的屬性上傳至伺服器。伺服器會使用此金鑰做為標準金鑰型驗證程序的一部分。每個使用者都可以針對個別伺服器上的檔案擁有多個公有 SSH 金鑰。有關每個用戶可以存儲的密鑰數量的限制,請參閱AWSService QuotasAWS一般參考

作為服務管理驗證方法的替代方法,您可以使用自訂身分識別提供者來驗證使用者。這可讓您使用 Amazon API Gateway 端點插入現有的身分供應商。如需詳細資訊,請參閱 使用 API Gateway 方法進行驗證

伺服器只能使用一種方法 (服務管理或自訂身分識別提供者) 來驗證使用者,而且在建立伺服器之後無法變更該方法。

在 macOS、Linux 或 UNIX 上建立安全殼層金鑰

在 macOS、Linux 或 UNIX 作業系統上,您可以使用ssh-keygen命令創建 SSH 公鑰和 SSH 私鑰也稱為 key pair。

若要在 macOS、Linux 或 UNIX 作業系統上建立安全殼層金鑰

  1. 在 macOS、Linux 或 UNIX 作業系統上,開啟指令終端機。

  2. AWS Transfer Family接受 RSA、ECDSA 和格式化的金鑰。根據您要產生的金鑰配對類型選擇適當的指令。

    • 若要產生 RSA 4096 位元 key pair:

      ssh-keygen -t rsa -b 4096 -N "" -f key_name
    • 若要產生一組 521 位元金鑰配對 (ECDSA 的位元大小為 256、384 和 521),請執行下列動作:

      ssh-keygen -t ecdsa -b 521 -N "" -f key_name
    • 若要產生 ED25519 key pair:

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

    key_name是 SSH key pair 檔案名稱。

    如下列範例所示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]-----+
  3. 導覽至key_name.pub 文件並打開它。

  4. 複製文本並將其粘貼到SSH 公有金鑰

注意

當您如上所述執行 ssh-keygen 命令時,它會在目前的目錄內以檔案的型式建立公有和私有金鑰。

在微軟視窗上建立 SSH 金鑰

Windows 會使用稍微不同的 SSH 金鑰對格式。公有金鑰的格式必須是 PUB 格式,私有金鑰的格式則必須是 PPK 格式。在 Windows 上,您可以使用 PuTTYgen 以適當的格式建立 SSH 金鑰對。您還可以使用 PuTTYgen 轉換使用生成的私鑰ssh-keygen到一個 .ppk 文件。

注意

如果您以非 .ppk 格式的私密金鑰檔案呈現 WinSCP,則該用戶端會為您提供將金鑰轉換為 .ppk 格式。

如需在 Windows 上使用 PuTTYgen 建立安全殼層金鑰的教學課程,請參閱SSH.com 網站

輪換 SSH 金鑰

為了安全起見,我們建議您使用輪換安全殼層金鑰的最佳作法。通常,此輪替被指定為安全策略的一部分,並以某種自動化方式實施。視安全性等級而定,對於高度敏感的通訊,SSH key pair 可能只會使用一次。這樣做可消除任何因存放金鑰所帶來的風險。但是,存儲 SSH 憑據一段時間並設置不會給用戶造成不必要負擔的間隔更為常見。常見的間隔是三個月。

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

  • 在主控台上,您可以上傳新的安全殼層公開金鑰,並刪除現有的安全殼層公開金鑰。

  • 您可以使用 API 來更新現有的使用者DeleteSshPublicKey用於刪除使用者的安全殼層 (SSH) 公開金鑰和ImportSshPublicKey用於將新的安全殼層 (SSH) 公開金鑰新增至使用者帳戶的 API。

Console

在主控台中執行按鍵旋轉

  1. 開啟AWS Transfer Family主控台https://console.aws.amazon.com/transfer/

  2. 導覽至伺服器頁面。

  3. 選擇中的標識符伺服器識別碼列以查看Server 詳細資訊頁面。

  4. 使用者,選取您要旋轉其安全殼層公開金鑰的使用者核取方塊,然後選擇動作,然後選擇新增金鑰以查看新增金鑰頁面。

    選擇使用者名稱來查看用戶詳細信息,然後選擇新增安全殼層公開金鑰以查看新增金鑰頁面。

  5. 輸入新的 SSH 公鑰並選擇新增金鑰

    重要

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

    • 對於 RSA 密鑰,格式為ssh-rsa <string>

    • 對於 ED25519 鍵,格式為ssh-ed25519 <string>

    • 對於 ECDSA 金鑰,金鑰的開頭為ecdsa-sha2-nistp256ecdsa-sha2-nistp384,或ecdsa-sha2-nistp521,取決於您產生索引鍵的大小。然後開始字符串後跟<string>,類似於其他鍵類型。

    您將返回到用戶詳細信息頁面,而您剛才輸入的新 SSH 公開金鑰會出現在SSH 公鑰區段。

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

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

API

若要使用 API 執行金鑰輪換

  1. 在 macOS、Linux 或 UNIX 作業系統上,開啟指令終端機。

  2. 輸入以下命令以擷取您要刪除的 SSH 金鑰:

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

    哪裡ServerId是 Transfer Family 伺服器的伺服器 ID,以及用戶名是您的使用者名稱。

    該命令返回有關用戶的詳細信息。複製的內容"SshPublicKeyId":field:您需要在此程序的後續步驟中輸入此值。

    "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'

    其中公有金鑰是您新公鑰的指紋。如果命令成功,則不會傳回任何輸出。

  4. 最後,執行下列命令來刪除舊金鑰:

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

    哪裡密鑰從步驟 2是您在此程序的步驟 2 中複製的金鑰識別碼值。

  5. (選擇性) 重複步驟 2,以確認舊金鑰不再存在。