本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
金鑰管理
在本節中,您可以找到有關SSH金鑰的資訊,包括如何產生金鑰以及如何輪換金鑰。如需使用 Transfer Family AWS Lambda 搭配 管理金鑰的詳細資訊,請參閱部落格文章使用 A AWS Transfer Family 和 啟用使用者自助式金鑰管理 AWS Lambda
注意
AWS Transfer Family 接受 RSA、 ECDSA和 ED25519金鑰。
本節也說明如何產生和管理 Pretty Good Privacy (PGP) 金鑰。
使用者和伺服器金鑰支援的演算法
使用者和伺服器金鑰對支援下列金鑰演算法 AWS Transfer Family。
注意
如需在工作流程中使用 與PGP解密搭配使用的演算法,請參閱PGP金鑰對支援的演算法。
-
對於 ED25519:
ssh-ed25519
-
對於 RSA:
-
rsa-sha2-256
-
rsa-sha2-512
-
-
對於 ECDSA:
-
ecdsa-sha2-nistp256
-
ecdsa-sha2-nistp384
-
ecdsa-sha2-nistp521
-
注意
我們支援 ssh-rsa
SHA1的舊版安全政策。如需詳細資訊,請參閱 密碼編譯演算法。
為受服務管理的使用者產生SSH金鑰
您可以設定伺服器,使用服務受管身分驗證方法驗證使用者,其中使用者名稱和SSH金鑰存放在服務中。使用者的公有SSH金鑰會以使用者屬性的形式上傳到伺服器。伺服器會將此金鑰用作標準金鑰型身分驗證程序的一部分。每個使用者可以在具有個別伺服器的檔案中擁有多個公有SSH金鑰。如需每個使用者可儲存的金鑰數量限制,請參閱 中的AWS Transfer Family 端點和配額Amazon Web Services 一般參考。
作為服務受管身分驗證方法的替代方案,您可以使用自訂身分提供者或 來驗證使用者 AWS Directory Service for Microsoft Active Directory。如需詳細資訊,請參閱 使用自訂身分提供者 或 使用 AWS Directory Service 身分提供者。
伺服器只能使用一種方法 (服務受管、目錄服務或自訂身分提供者) 來驗證使用者,且在建立伺服器後無法變更該方法。
在 macOS 、Linux 或 Unix 上建立SSH金鑰
在 macOS 、Linux 或 Unix 作業系統上,您可以使用 ssh-keygen
命令來建立SSH公有金鑰和SSH私有金鑰,也稱為金鑰對。
在 macOS 、Linux 或 Unix 作業系統上建立SSH金鑰
-
在 macOS 、Linux 或 Unix 作業系統上,開啟命令終端機。
-
AWS Transfer Family 接受 RSA-、ECDSA- 和 ED25519格式化金鑰。根據您要產生的金鑰對類型選擇適當的命令。
注意
在下列範例中,我們不會指定密碼片語:在此情況下,該工具會要求您輸入密碼片語,然後重複進行驗證。建立複雜密碼可為私有金鑰提供更好的保護,也可能改善整體系統安全性。您無法復原密碼:如果忘記密碼,則必須建立新的金鑰。
不過,如果您要產生伺服器主機金鑰,則必須在命令中指定
-N ""
選項 (或在出現提示時按Enter
兩次) 來指定空密碼,因為 Transfer Family 伺服器無法在啟動時請求密碼。-
若要產生 RSA 4096 位元金鑰對:
ssh-keygen -t rsa -b 4096 -f
key_name
-
若要產生 ECDSA 521 位元金鑰對 (ECDSA 位元大小為 256、384 和 521):
ssh-keygen -t ecdsa -b 521 -f
key_name
-
若要產生ED25519金鑰對:
ssh-keygen -t ed25519 -f
key_name
注意
是SSH金鑰對檔案名稱。key_name
下列顯示
ssh-keygen
輸出的範例。ssh-keygen -t rsa -b 4096 -f key_name Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: 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
命令時,它會在目前的目錄內以檔案的型式建立公有和私有金鑰。您的SSH金鑰對現已準備就緒,可供使用。請依照步驟 3 和 4 來存放受服務管理的使用者的SSH公有金鑰。這些使用者在 Transfer Family 伺服器端點上傳輸檔案時,會使用 金鑰。
-
-
導覽至
檔案並開啟。key_name
.pub -
複製文字並將其貼到服務受管使用者的SSH公有金鑰中。
-
在 開啟 AWS Transfer Family 主控台https://console.aws.amazon.com/transfer/
,然後從導覽窗格中選取伺服器。 -
在伺服器頁面上,選取包含您要更新之使用者之伺服器的伺服器 ID。
-
選取您要為其新增公有金鑰的使用者。
-
在SSH公有金鑰窗格中,選擇新增SSH公有金鑰 。
-
將產生的公有金鑰文字貼到SSH公有金鑰文字方塊,然後選擇新增金鑰 。
新的金鑰會列在SSH公有金鑰窗格中。
-
在 Microsoft Windows 上建立SSH金鑰
Windows 使用略有不同的SSH金鑰對格式。公有金鑰的格式必須是 PUB
格式,私有金鑰的格式則必須是 PPK
格式。在 Windows 上,您可以使用 P uTTYgen 以適當的格式建立SSH金鑰對。您也可以使用 P uTTYgen 將 產生的私有金鑰轉換為 ssh-keygen
.ppk
檔案。
注意
如果您使用非 .ppk
格式的私有金鑰檔案展示 WinSCP,該用戶端會提議將金鑰轉換為 .ppk
格式。
如需在 Windows uTTYgen 上使用 P 建立SSH金鑰的教學課程,請參閱 SSH.com 網站
將SSH2公有金鑰轉換為PEM格式
AWS Transfer Family 僅接受PEM格式化公有金鑰。如果您有SSH2公有金鑰,則需要將其轉換。SSH2 公有金鑰的格式如下:
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20160402" AAAAB3NzaC1yc2EAAAABJQAAAgEAiL0jjDdFqK/kYThqKt7THrjABTPWvXmB3URI : : ---- END SSH2 PUBLIC KEY ----
PEM 公有金鑰具有下列格式:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...
執行下列命令,將SSH2格式化的公有金鑰轉換為PEM格式化的公有金鑰。Replace (取代) ssh2-key
您的SSH2金鑰名稱,以及 PEM-key
您的PEM金鑰名稱。
ssh-keygen -i -f
ssh2-key
.pub >PEM-key
.pub
輪換SSH索引鍵
為了安全起見,我們建議您輪換SSH金鑰的最佳實務。通常,此輪換會指定為安全政策的一部分,並以某些自動化方式實作。根據安全層級,對於高度敏感的通訊,SSH金鑰對只能使用一次。這樣做可消除任何因存放金鑰所帶來的風險。不過,儲存SSH憑證一段時間,並設定不會對使用者造成過度負擔的間隔比較常見。常見的間隔是三個月。
有兩種方法可用來執行SSH金鑰輪換:
-
在主控台上,您可以上傳新的SSH公有金鑰並刪除現有的SSH公有金鑰。
-
您可以使用 更新現有使用者API,方法是使用 DeleteSshPublicKeyAPI刪除使用者的 Secure Shell (SSH) 公有金鑰,以及ImportSshPublicKeyAPI將新的 Secure Shell (SSH) 公有金鑰新增至使用者帳戶。
產生和管理PGP金鑰
您可以使用 Pretty Good Privacy (PGP) 解密搭配 Transfer Family 與工作流程處理的檔案。若要在工作流程步驟中使用解密,您必須提供PGP金鑰。
AWS 儲存部落格有一個文章,說明如何使用 PGP和 加密和解密檔案、加密和解密檔案 AWS Transfer Family
產生PGP金鑰
您用來產生PGP金鑰的方法取決於您的作業系統和您正在使用的金鑰產生軟體版本。
如果您使用的是 Linux 或 Unix,請使用套件安裝程式來安裝 gpg
。根據您的 Linux 發行版本,下列其中一個命令應該適用於您。
sudo yum install gnupg
sudo apt-get install gnupg
對於 Windows 或 macOS ,您可以從 https://gnupg.org/download/
安裝PGP金鑰產生器軟體後,請執行 gpg --full-gen-key
或 gpg --gen-key
命令以產生金鑰對。
注意
如果您使用的是 2GnuPG
.3.0 版或更新版本,則必須執行 gpg --full-gen-key
。當提示要建立的金鑰類型時,請選擇 RSA或 ECC。不過,如果您選擇 ECC,請務必選擇 NIST 或 BrainPool 橢圓曲線。請勿選擇 Curve 25519.
PGP金鑰對支援的演算法
PGP 金鑰對支援下列演算法:
-
RSA
-
高端
-
ECC:
-
NIST
-
BrainPool
-
注意
不支援 Curve25519 金鑰。
有用的gpg
子命令
以下是 的一些實用子命令gpg
:
-
gpg --help
– 此命令會列出可用的選項,並可能包含一些範例。 -
gpg --list-keys
– 此命令會列出您已建立的所有金鑰對的詳細資訊。 -
gpg --fingerprint
– 此命令會列出所有金鑰對的詳細資訊,包括每個金鑰的指紋。 -
gpg --export -a
– 此命令會匯出產生金鑰時user-name
所使用的 金鑰的公有金鑰部分。user-name
管理 PGP 金鑰
若要管理PGP金鑰,您必須使用 AWS Secrets Manager。
注意
您的秘密名稱包含 Transfer Family 伺服器 ID。這表示在將PGP金鑰資訊存放在 之前,您應該已經識別或建立伺服器 AWS Secrets Manager。
如果您想要為所有使用者使用一個金鑰和密碼片語,您可以將PGP金鑰區塊資訊存放在秘密名稱 下aws/transfer/
,其中 server-id
/@pgp-default
是 Transfer Family 伺服器的 ID。如果沒有 與執行工作流程的使用者server-id
相符的金鑰,則會使用此預設金鑰。user-name
或者,您可以為特定使用者建立金鑰。在此情況下,秘密名稱的格式為 aws/transfer/
,其中 與執行 Transfer Family 伺服器工作流程的使用者server-id
/user-name
相符。user-name
注意
每個 Transfer Family 伺服器、每個使用者最多可以存放 3 個PGP私有金鑰。
設定PGP金鑰以搭配解密使用
-
根據您GPG使用的 版本,執行下列其中一個命令來產生不使用 Curve 25519 加密演算法的PGP金鑰對。
-
如果您使用的是 2.3.0
GnuPG
版或更新版本,請執行下列命令:gpg --full-gen-key
您可以選擇
RSA
,或者,如果您選擇ECC
,您可以選擇橢圓曲線BrainPool
的NIST
或 。如果您gpg --gen-key
改為執行,則會建立使用 ECC Curve 25519 加密演算法的金鑰對,我們目前不支援該PGP金鑰。 -
對於 2.3.0
GnuPG
之前的 版本,您可以使用下列命令,因為 RSA是預設加密類型。gpg --gen-key
重要
在金鑰產生過程中,您必須提供密碼和電子郵件地址。請務必記下這些值。在本程序中 AWS Secrets Manager 稍後將金鑰的詳細資訊輸入 時,您必須提供密碼片語。而且,您必須提供相同的電子郵件地址,才能在下一個步驟中匯出私有金鑰。
-
-
執行下列命令以匯出私有金鑰。若要使用此命令,請將 取代
為要儲存私有金鑰區塊的檔案名稱,以及private.pgp
您在產生金鑰對時使用的電子郵件地址。marymajor@example.com
gpg --output
private.pgp
--armor --export-secret-keymarymajor@example.com
-
使用 AWS Secrets Manager 來存放您的PGP金鑰。
-
登入 AWS Management Console 並在 開啟 AWS Secrets Manager 主控台https://console.aws.amazon.com/secretsmanager/
。 -
在左側導覽窗格中,選擇秘密。
-
在秘密頁面上,選擇儲存新的秘密 。
-
在選擇秘密類型頁面上,針對秘密類型 ,選取其他類型的秘密 。
-
在鍵/值對區段中,選擇鍵/值索引標籤。
-
金鑰 – 輸入
PGPPrivateKey
。注意
您必須確實輸入
PGPPrivateKey
字串:請勿在字元之前或之間新增任何空格。 -
值 – 將私有金鑰的文字貼到值欄位中。您可以在本程序中稍早匯出金鑰時指定的檔案 (例如
private.pgp
) 中找到私有金鑰的文字。金鑰開頭為-----BEGIN PGP PRIVATE KEY BLOCK-----
,結尾為-----END PGP PRIVATE KEY BLOCK-----
。注意
請確定文字區塊僅包含私有金鑰,也不包含公有金鑰。
-
-
選取新增列,然後在鍵/值對區段中,選擇鍵/值索引標籤。
-
金鑰 – 輸入
PGPPassphrase
。注意
您必須確實輸入
PGPPassphrase
字串:請勿在字元之前或之間新增任何空格。 -
value – 輸入您在產生PGP金鑰對時使用的密碼片語。
注意
您最多可以新增 3 組金鑰和密碼片語。若要新增第二組,請新增兩列,然後
PGPPassphrase2
輸入 鍵的PGPPrivateKey2
和 ,然後貼到另一個私有金鑰和密碼片語中。若要新增第三組,金鑰值必須為PGPPrivateKey3
和PGPPassphrase3
。 -
-
選擇 Next (下一步)。
-
在設定秘密頁面上,輸入秘密的名稱和描述。
-
如果您要建立預設金鑰,亦即任何 Transfer Family 使用者都可以使用的金鑰,請輸入
aws/transfer/
。server-id
/@pgp-default
以包含具有解密步驟之工作流程的伺服器 ID 取代 。server-id
-
如果您要建立金鑰以供特定 Transfer Family 使用者使用,請輸入
aws/transfer/
。server-id
/user-name
以包含具有解密步驟之工作流程的伺服器 ID 取代 ,並以執行工作流程server-id
的使用者名稱取代 。user-name
會儲存在 Transfer Family 伺服器正在使用的身分提供者中。user-name
-
-
選擇下一步,並接受設定輪換頁面上的預設值。然後選擇下一步。
-
在檢閱頁面上,選擇儲存以建立和儲存秘密。
-
下列螢幕擷取畫面顯示marymajor
特定 Transfer Family 伺服器的使用者詳細資訊。此範例顯示三個金鑰及其對應的密碼片語。
支援的PGP用戶端
下列用戶端已使用 Transfer Family 進行測試,可用於產生PGP金鑰,以及加密您打算使用工作流程解密的檔案。
-
Gpg4win + Kleopatra 。
注意
當您選取簽署/加密檔案 時,請務必清除簽署為 的選擇:我們目前不支援簽署加密檔案。
-
主要 GnuPG 版本:2.4、2.3、2.2、2.0 和 1.4。
請注意,其他PGP用戶端可能也適用,但只有此處提到的用戶端已經過 Transfer Family 測試。