我可以使用
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:
但是我无法下载
myKey.pem
文件。是否可以像下面这样使用 myKey.pem
下载 Terraform
文件?
不,无法使用
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).
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"
}
注意:
private_key_pem
和 tls_private_key
导出属性 local_file
的内容。如果您真的不想,这里如何操作。