【问题标题】:AWS, terraform) How to connect to new instance from another instance which created new instance?AWS,terraform)如何从创建新实例的另一个实例连接到新实例?
【发布时间】:2019-10-14 14:00:53
【问题描述】:

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

如何将 key_name.pem 下载到 instance1?

这是我所做的:

  1. 我创建了 AWS 实例 1

  2. 生成 ssh 密钥

ssh-keygen -t rsa -b 4096 -C "roy" -f "$HOME/.ssh/test_key" -N ""
  1. terraform 应用(关键资源)
# 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. terraform 应用(创建实例)
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"
}

【问题讨论】:

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


    【解决方案1】:

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

    #!/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,然后运行 ​​ssh instance2_ip。这样您就不需要 instance1 上的私钥了。

    【讨论】:

    • 我在没有私钥的情况下尝试了这个命令:ssh -i ~/.ssh/test_key ubuntu@instanc2_public_ip。但是它没有用,没有任何反应,我不知道我做错了什么。所以我想尝试在我的堡垒 instance1 中使用私钥,就像 aws 说的:ssh -i "test_key.pem" ubuntu@ec2-~ip~.ap-northeast-2.compute.amazonaws.com
    • 但是 instance2 附加了一个允许传入 SSH 流量的安全组?
    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 2021-06-17
    • 2013-09-13
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多