AWS,terraform)如何从创建新实例的另一个实例连接到新实例?

时间:2019-05-29 02:44:23

标签: amazon-web-services terraform key-pair

我无法从 instance1 连接到 instance2 ,后者通过terraform创建instance2,因为instance1除了key_name.pub外没有key_name.pem。

如何将key_name.pem下载到instance1?

这是我所做的:

  1. 我创建了AWS实例1

  2. 生成ssh密钥

ssh-keygen -t rsa -b 4096 -C "roy" -f "$HOME/.ssh/test_key" -N ""
  1. 地形应用(关键资源)
# main.tf
provider "aws"{
    region = "ap-northeast-2"
}

resource "aws_key_pair" "test_key" {
key_name = "test_key"
public_key = "${file("~/.ssh/test_key.pub")}"
}
  1. 地形应用(创建实例)
provider "aws"{
    region = "ap-northeast-2"
}
resource "aws_instance" "ec2" {
ami = "ami-06e7b9c5e0c4dd014"
instance_type = "t2.nano"
key_name = "test_key"
tags {
Name = "ec2_instance"
}

1 个答案:

答案 0 :(得分:0)

创建 instance1 时可以使用user_data。 这可以是常规的bash脚本,您可以在其中为用户id_rsa创建ubuntu key_name.pem )文件(如果使用的是Ubuntu AMI)。 / p>

#!/bin/bash

#create id_rsa

echo "[KEY_DATA]" > /home/ubuntu/.ssh/id_rsa
chmod 0600 /home/ubuntu/.ssh/id_rsa

但是为什么您甚至需要在实例上使用私钥? Terraform不需要私钥...

以防万一,如果您使用 instance1 作为SSH堡垒: 您应该使用SSH转发,而不是将私钥复制到实例:运行ssh -A instance1_ip,然后从实例1运行ssh instance2_ip。这样,您就不需要 instance1 上的私钥。