驗證金鑰對的指紋 - Amazon Elastic Compute Cloud

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

驗證金鑰對的指紋

若要驗證金鑰對的指紋,請將 Amazon EC2主控台中金鑰對頁面上顯示的指紋,或由 describe-key-pairs命令傳回的指紋與您在本機電腦上使用私有金鑰產生的指紋進行比較。這些指紋應該相符。

當 Amazon EC2計算指紋時,Amazon EC2可能會使用 = 字元將填充附加至指紋。其他工具,例如 ssh-keygen,可能會忽略此填補。

如果您嘗試驗證 Linux EC2執行個體的指紋,而不是金鑰對的指紋,請參閱取得執行個體指紋

如何計算指紋

Amazon EC2使用不同的雜湊函數來計算 RSA和 ED25519金鑰對的指紋。此外,對於RSA金鑰對,Amazon 會根據 Amazon 建立EC2或匯入 Amazon 的金鑰對,使用不同的雜湊函數以不同方式EC2計算指紋EC2。

下表列出用於計算 Amazon 建立EC2並匯入 Amazon 的指紋RSA和ED25519金鑰對的雜湊函數EC2。

(Linux 執行個體) 用於計算指紋的雜湊函數
金鑰對來源 RSA 金鑰對 (Windows 和 Linux) ED25519 金鑰對 (Linux)
由 Amazon 建立 EC2 SHA-1 SHA-256
匯入 Amazon EC2 MD51 SHA-256

1 如果您將公有RSA金鑰匯入 Amazon EC2,則會使用MD5雜湊函數計算指紋。無論您如何建立金鑰對,例如使用第三方工具,或從使用 Amazon 建立的現有私有金鑰產生新的公有金鑰,都是如此EC2。

在不同區域中使用相同的金鑰對

如果您計劃使用相同的金鑰對來連線到不同 中的執行個體 AWS 區域,則必須將公有金鑰匯入到您將使用它的所有 區域。如果您使用 Amazon EC2建立金鑰對,則可以擷取公有金鑰資料將公有金鑰匯入其他 區域。

注意
  • 如果您使用 Amazon 建立RSA金鑰對EC2,然後從 Amazon EC2私有金鑰產生公有金鑰,則匯入的公有金鑰將具有與原始公有金鑰不同的指紋。這是因為使用 Amazon 建立之原始RSA金鑰的指紋EC2是使用 SHA-1 雜湊函數計算,而匯入RSA金鑰的指紋是使用MD5雜湊函數計算。

  • 對於ED25519金鑰對,無論指紋是由 Amazon 建立EC2還是匯入 Amazon ,指紋都會相同EC2,因為使用相同的 SHA-256 雜湊函數來計算指紋。

從私有金鑰產生指紋

使用下列命令之一從本機電腦上的私有金鑰產生指紋。

如果您使用的是 Windows 本機機器,則可以使用 Windows Subsystem for Linux () 執行下列命令WSL。使用 Windows 10 安裝指南 中的說明安裝 WSL和 Linux 分發。指示中的範例是安裝 Linux 的 Ubuntu 發行版本,但您可以安裝任何發行版本。您將會收到提示,要求您重新啟動電腦以讓變更生效。

  • 如果您使用 Amazon 建立金鑰對 EC2

    使用開啟SSL工具產生指紋,如下列範例所示。

    對於RSA金鑰對:

    openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

    (Linux 執行個體) 對於ED25519金鑰對:

    ssh-keygen -l -f path_to_private_key
  • (RSA 僅限金鑰對) 如果您將公有金鑰匯入 Amazon EC2

    無論您如何建立金鑰對,都可以遵循此程序,例如使用第三方工具,或從使用 Amazon 建立的現有私有金鑰產生新的公有金鑰 EC2

    使用開啟SSL工具產生指紋,如下列範例所示。

    openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c
  • 如果您使用 Open SSH7.8 或更新版本建立開放SSH金鑰對,並將公有金鑰匯入 Amazon EC2

    如下列範例所示,使用 ssh-keygen 來產生指紋。

    對於RSA金鑰對:

    ssh-keygen -ef path_to_private_key -m PEM | openssl rsa -RSAPublicKey_in -outform DER | openssl md5 -c

    (Linux 執行個體) 對於ED25519金鑰對:

    ssh-keygen -l -f path_to_private_key