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

Create a key pair and download the .pem file with Terraform (AWS)

我可以用 Terraform 创建密钥对 myKeyAWS

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:

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

2022 年 2 月更新:

不,无法使用 Terraform 下载 myKey.pem 文件。相反,我们可以创建 myKey.pem 文件,它与 AWS 上的密钥对 myKey 具有相同的 private key。因此Terraform创建的myKeymyKey.pem文件与我们在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
ubuntu@35.72.30.251: Permission denied (publickey).

Terraform 资源tls_private_key 具有可以导出的属性。 This 是列表。

使用 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
}

:

  1. 您无法使用资源 tls_private_keylocal_file 导出属性 private_key_pem 的内容。如果你真的不想,怎么办。

  2. 文件 myKey.pem 由 Terraform 生成,权限为 755。您需要将其更改为 400