创建密钥对 - AWS Tools for PowerShell

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建密钥对

以下 New-EC2KeyPair 示例创建密钥对并将其存储在 PowerShell 变量 $myPSKeyPair 中。

PS > $myPSKeyPair = New-EC2KeyPair -KeyName myPSKeyPair

将密钥对对象通过管道传输到 Get-Member cmdlet 中以查看对象的结构。

PS > $myPSKeyPair | Get-Member TypeName: Amazon.EC2.Model.KeyPair Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() KeyFingerprint Property System.String KeyFingerprint {get;set;} KeyMaterial Property System.String KeyMaterial {get;set;} KeyName Property System.String KeyName {get;set;}

将密钥对对象通过管道传输到 Format-List cmdlet 以查看 KeyNameKeyFingerprintKeyMaterial 成员的值。(为了便于阅读,输入内容已截断。)

PS > $myPSKeyPair | Format-List KeyName, KeyFingerprint, KeyMaterial KeyName : myPSKeyPair KeyFingerprint : 09:06:70:8e:26:b6:e7:ef:8f:fe:4a:1d:bc:9c:6a:63:11:ac:ad:3c KeyMaterial : ----BEGIN RSA PRIVATE KEY---- MIIEogIBAAKCAQEAkK+ANYUS9c7niNjYfaCn6KYj/D0I6djnFoQE... Mz6btoxPcE7EMeH1wySUp8nouAS9xbl9l7+VkD74bN9KmNcPa/Mu... Zyn4vVe0Q5il/MpkrRogHqOB0rigeTeV5Yc3lvO0RFFPu0Kz4kcm... w3Jg8dKsWn0plOpX7V3sRC02KgJIbejQUvBFGi5OQK9bm4tXBIeC... daxKIAQMtDUdmBDrhR1/YMv8itFe5DiLLbq7Ga+FDcS85NstBa3h... iuskGkcvgWkcFQkLmRHRoDpPb+OdFsZtjHZDpMVFmA9tT8EdbkEF... 3SrNeqZPsxJJIxOodb3CxLJpg75JU5kyWnb0+sDNVHoJiZCULCr0... GGlLfEgB95KjGIk7zEv2Q7K6s+DHclrDeMZWa7KFNRZuCuX7jssC... xO98abxMr3o3TNU6p1ZYRJEQ0oJr0W+kc+/8SWb8NIwfLtwhmJEy... 1BX9X8WFX/A8VLHrT1elrKmLkNECgYEAwltkV1pOJAFhz9p7ZFEv... vvVsPaF0Ev9bk9pqhx269PB5Ox2KokwCagDMMaYvasWobuLmNu/1... lmwRx7KTeQ7W1J3OLgxHA1QNMkip9c4Tb3q9vVc3t/fPf8vwfJ8C... 63g6N6rk2FkHZX1E62BgbewUd3eZOS05Ip4VUdvtGcuc8/qa+e5C... KXgyt9nl64pMv+VaXfXkZhdLAdY0Khc9TGB9++VMSG5TrD15YJId... gYALEI7m1jJKpHWAEs0hiemw5VmKyIZpzGstSJsFStERlAjiETDH... YAtnI4J8dRyP9I7BOVOn3wNfIjk85gi1/0Oc+j8S65giLAfndWGR... 9R9wIkm5BMUcSRRcDy0yuwKBgEbkOnGGSD0ah4HkvrUkepIbUDTD... AnEBM1cXI5UT7BfKInpUihZi59QhgdK/hkOSmWhlZGWikJ5VizBf... drkBr/vTKVRMTi3lVFB7KkIV1xJxC5E/BZ+YdZEpWoCZAoGAC/Cd... TTld5N6opgOXAcQJwzqoGa9ZMwc5Q9f4bfRc67emkw0ZAAwSsvWR... x3O2duuy7/smTwWwskEWRK5IrUxoMv/VVYaqdzcOajwieNrblr7c... -----END RSA PRIVATE KEY-----

KeyMaterial 成员存储密钥对的私有密钥。公有密钥存储在AWS中。您无法从AWS检索公有密钥,但是,您可以通过将私有密钥的 KeyFingerprint 与AWS返回的公有密钥的该值进行对比来验证公有密钥。

查看密钥对的指纹

您可以使用 Get-EC2KeyPair cmdlet 查看密钥对的指纹。

PS > Get-EC2KeyPair -KeyName myPSKeyPair | format-list KeyName, KeyFingerprint KeyName : myPSKeyPair KeyFingerprint : 09:06:70:8e:26:b6:e7:ef:8f:fe:4a:1d:bc:9c:6a:63:11:ac:ad:3c

存储私有密钥

要将私有密钥存储到文件中,请将 KeyFingerMaterial 成员通过管道传输到 Out-File cmdlet。

PS > $myPSKeyPair.KeyMaterial | Out-File -Encoding ascii myPSKeyPair.pem

在将私有密钥写入到文件中时,必须指定 -Encoding ascii。否则,openssl 等工具可能无法正确读取此文件。您可以使用类似于以下的命令来验证生成文件的格式是否正确:

PS > openssl rsa -check < myPSKeyPair.pem

openssl 工具未包含在 AWS Tools for PowerShell 或 AWS SDK for .NET 中。)

删除密钥对

您需要密钥对来启动和连接到实例。在用完密钥对后,您可以将其删除。要从AWS中删除公有密钥,请使用 Remove-EC2KeyPair cmdlet。在出现提示时,按 Enter 可删除密钥对。

PS > Remove-EC2KeyPair -KeyName myPSKeyPair Confirm Performing the operation "Remove-EC2KeyPair (DeleteKeyPair)" on target "myPSKeyPair". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):

变量 $myPSKeyPair 仍存在于当前 PowerShell 会话中,并仍包含密钥对信息。myPSKeyPair.pem 文件也存在。但是,公有密钥不再有效,因为密钥对的私有密钥不再存储在AWS中。