Terraform aws_key_pair 创建奇怪的密钥

Terraform aws_key_pair 创建奇怪的密钥

我一直在研究和测试使用 terraform、aws secretsmanager 和基本 ec2 实例部署东西。

我让它工作了。好了,实例启动了,密钥被创建了,并且使用该密钥的远程执行工作正常!

但是,如果我输出它,密钥看起来是这样的:

-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIJffzvvCaUzFEVKYapZh4jjUfF1O3hnjrT6jVT/M9VsX
-----END PRIVATE KEY-----

ssh 拒绝使用它。我也无法使用 ssh-keygen 将其转换为其他任何内容。

但是,它似乎可以与我的 remote-exec 配合使用:

resource "tls_private_key" "pk" {
  algorithm        = "ED25519"
}

resource "aws_key_pair" "pgx" {
  key_name         = "pgx"
  public_key       = tls_private_key.pk.public_key_openssh

  provisioner "local-exec" {
    command = "echo '${tls_private_key.pk.private_key_pem}' > /home/terraform/.ssh/pgx-private-key.pem"
  }
}


resource "aws_instance" "pgx_dev" {
  ami              = "ami-1234"
  instance_type    = "t2.micro"
  key_name         = aws_key_pair.pgx.key_name
  security_groups  = [ "pgx-internal" ]

  provisioner "remote-exec" {
    connection {
      type           = "ssh"
      user           = "ubuntu"
      private_key    = tls_private_key.pk.private_key_pem
      host           = "${self.private_ip}"
    }

    inline = [
      "ls -la"
    ]
  }

}

结果:

aws_instance.pgx_dev (remote-exec): 已连接!aws_instance.pgx_dev (remote-exec): 总计 28...

如果我直接查看 secretsmanager 中的密钥,我会看到同样的东西。local-exec 生成的文件也是一样。

但是 ssh 清楚地说:“加载密钥“pgx-private-key.pem”:格式无效”

我在这里遗漏了什么?

答案1

解决方案是在 terraform 中使用 private_key_openssh 而不是 private_key_pem。这会生成可用于 ssh 的密钥。

相关内容