6

boto3 1.1.2 文档说该create_key_pair命令应该返回一个包含新创建的密钥对的私钥的字典。

我确实在用那个版本……</p>

>>> import boto3
>>> boto3.__version__
'1.1.2'

…然而,当我运行时,create_key_pair我反而返回了一个KeyPair对象,该对象似乎不包含有关私钥的任何信息。确实创建了密钥对,只是我无法检索私钥,因为它仅在创建密钥对时才可用。较旧的 bo​​to API 显然.save在对象上有一个方法KeyPair可以将密钥保存到文件中,但这似乎也已从 API 中删除。

在 boto3 1.1.2 中,如何创建新的 EC2 密钥对检索其私钥?

4

3 回答 3

10

私钥可用于keypair['KeyMaterial']

>>> import boto3
>>> ec2 = boto3.client('ec2')
>>> keypair = ec2.create_key_pair(KeyName='foo')
>>> keypair['KeyMaterial']
'-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCA...\n-----END RSA PRIVATE KEY-----'

参考:

于 2015-08-26T23:47:06.390 回答
2

在新版本的 boto3(我使用的是 1.4.7)中更改这一行:

keypair['KeyMaterial']

keypair.key_material
于 2017-09-25T13:43:52.107 回答
1

添加保存到本地密钥对文件的功能

$ cat keypair.py

import boto3

keypair_name = "python_keypair"

ec2 = boto3.client('ec2')
keypair = ec2.create_key_pair(KeyName=keypair_name)

private_key_file=open(keypair_name,"w")
private_key_file.write(response['KeyMaterial'])
private_key_file.close

现在您应该在本地获取私钥

$ cat python_keypair.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA14D9GAC7zVSRr3iHUyEaIF8ol5ccWBj9InVqYnF28l10EUCz
g5OLL5Ll6WiIYvlxhcRHM5d0os2Lg5SuKi0mTktYQ7QVD8RkdoEYIVrqgBir3VMf
8jG08JRhaJs4/OQk2+WAGecjcVx6joz9yXTRT3Maaec/4qNigfYMLpSsdAoZ0hrk
....

将其移至~/.ssh并将权限更改为 600

于 2021-02-27T07:36:16.623 回答