创建密钥对并使用 Terraform (AWS) 下载 .pem 文件

问题描述 投票:0回答:2

我可以使用

myKey
创建密钥对
AWS
Terraform

resource "tls_private_key" "pk" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "aws_key_pair" "kp" {
  key_name   = "myKey"       # Create a "myKey" to AWS!!
  public_key = tls_private_key.pk.public_key_openssh
}

AWS:

enter image description here

但是我无法下载

myKey.pem
文件。是否可以像下面这样使用
myKey.pem
下载
Terraform
文件?

enter image description here

amazon-web-services amazon-ec2 terraform private-key key-pair
2个回答
20
投票

2022 年 2 月更新:

不,无法使用

myKey.pem
下载
Terraform
文件。相反,我们可以创建
myKey.pem
文件,该文件具有与
private key
上的密钥对
myKey
相同的
AWS
。所以
myKey
创建的
myKey.pem
Terraform
文件与我们在
AWS
上手动创建并下载的文件是一样的。这是下面的代码。 (我使用Terraform v0.15.4)

resource "tls_private_key" "pk" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "aws_key_pair" "kp" {
  key_name   = "myKey"       # Create a "myKey" to AWS!!
  public_key = tls_private_key.pk.public_key_openssh

  provisioner "local-exec" { # Create a "myKey.pem" to your computer!!
    command = "echo '${tls_private_key.pk.private_key_pem}' > ./myKey.pem"
  }
}

不要忘记使

myKey.pem
文件只能由您在 ssh 到您的 ec2 实例之前运行以下代码读取。

chmod 400 myKey.pem

否则会出现以下错误。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for 'myKey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "myKey.pem": bad permissions
[email protected]: Permission denied (publickey).

11
投票

Terraform 资源

tls_private_key
具有可以导出的属性。 是列表。

使用 Terraform 下载

myKey.pem
的方式是将属性
private_key_pem
导出到本地文件。

所以在你的情况下,它会是:

resource "tls_private_key" "pk" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "aws_key_pair" "kp" {
  key_name   = "myKey"       # Create a "myKey" to AWS!!
  public_key = tls_private_key.pk.public_key_openssh
}

resource "local_file" "ssh_key" {
  filename = "${aws_key_pair.kp.key_name}.pem"
  content = tls_private_key.pk.private_key_pem
  file_permission = "0400"
}

注意

  1. 您无法使用资源
    private_key_pem
    tls_private_key
    导出属性
    local_file
    的内容。如果您真的不想,这里如何操作。
© www.soinside.com 2019 - 2024. All rights reserved.