【问题标题】:Create new EC2 keypair on AWS with Boto3使用 Boto3 在 AWS 上创建新的 EC2 密钥对
【发布时间】:2015-11-20 22:06:00
【问题描述】:

boto3 1.1.2 文档say that the create_key_pair command 应该返回一个包含新创建的密钥对的私钥的字典。

我确实在使用那个版本……

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

...然而,当我运行 create_key_pair 时,我却返回了一个 KeyPair object,它似乎不包含有关私钥的任何信息。确实创建了密钥对,只是我无法检索私钥,因为it is only ever available at the time of the keypair's creation。较旧的 bo​​to API 显然在 KeyPair 对象上有一个 .save 方法来将密钥保存到文件中,但这似乎也已从 API 中删除。

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

【问题讨论】:

    标签: amazon-ec2 boto3


    【解决方案1】:

    私钥在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-----'
    

    参考资料:

    【讨论】:

    • 我的问题是我使用的是ec2 = boto3.resource('ec2')而不是客户端,而create_key_pair的资源实现显然有不同的API。我通过切换到keypair = ec2.meta.client.create_key_pair(...)解决了它。
    【解决方案2】:

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

    keypair['KeyMaterial']
    

    keypair.key_material
    

    【讨论】:

      【解决方案3】:

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

      $ 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

      【讨论】:

        猜你喜欢
        • 2018-10-12
        • 2017-01-22
        • 2012-07-24
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多