无法通过SSH连接到Terraform创建的AWS实例

时间:2020-01-05 16:37:07

标签: amazon-web-services networking ssh terraform

我正在尝试使用terraform来启动VPC和单个实例,然后通过ssh进行连接,但是我无法这样做。我知道我这里没有任何键,但是我试图通过Web终端简单地连接,它仍然显示

设置实例连接时出现问题连接 已关闭,因为服务器的响应时间太长。这个 通常是由网络问题引起的,例如无线网络参差不齐 信号或网络速度慢。请检查您的网络连接 然后重试或与系统管理员联系。

有人能看我的代码,看看我在做什么错吗?

provider "aws" {
    region = "us-east-2"
}

resource "aws_vpc" "vpc" {
    cidr_block = "10.0.0.0/16"
    enable_dns_hostnames = true
    enable_dns_support = true
    tags = {
        Name = "test"
    }
}

resource "aws_internet_gateway" "gateway" {
    vpc_id = "${aws_vpc.vpc.id}"

    tags = {
        Name = "test"
    }
}

resource "aws_subnet" "subnet" {
    vpc_id = "${aws_vpc.vpc.id}"
    cidr_block = "${aws_vpc.vpc.cidr_block}"
    availability_zone = "us-east-2a"
    map_public_ip_on_launch = true

    tags = {
        Name = "test"
    }
}

resource "aws_route_table" "table" {
    vpc_id = "${aws_vpc.vpc.id}"

    route {
        cidr_block = "0.0.0.0/0"
        gateway_id = "${aws_internet_gateway.gateway.id}"
    }

    tags = {
        Name = "test"
    }

}

resource "aws_route_table_association" "public" {
    subnet_id = "${aws_subnet.subnet.id}"
    route_table_id = "${aws_route_table.table.id}"
}

resource "aws_instance" "node" {
    #ami = "ami-0d5d9d301c853a04a" # Ubuntu 18.04
    ami = "ami-0d03add87774b12c5" # Ubuntu 16.04
    instance_type = "t2.micro"
    subnet_id = "${aws_subnet.subnet.id}"
}

UPDATE1 :我添加了先前创建的key_name = "mykey"。我无法ping通公共IP,并尝试使用密钥ssh时获得以下信息:

$ ssh -v -i ~/.ssh/mykey ubuntu@1.2.3.4
OpenSSH_7.9p1, LibreSSL 2.7.3
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Connecting to 1.2.3.4 [1.2.3.4] port 22.

其中mykey1.2.3.4已更改为可发布。

UPDATE2 :在安全组中,我看不到任何突出的地方。为此的ACL具有以下内容:

Rule # Type          Protocol Port Range Source      Allow / Deny
100    ALL Traffic   ALL      ALL        0.0.0.0/0   ALLOW
*      ALL Traffic   ALL      ALL        0.0.0.0/0   DENY

这是问题吗?似乎没有人看到terraform代码有问题,所以如果有人可以确认这不是代码问题,那么我认为可以将其关闭并转移到另一块板上,因为这不是代码问题,对吗?

2 个答案:

答案 0 :(得分:0)

您尚未提供key_name来指示要使用的SSH密钥对。

如果您没有现有的aws_key_pair,则还需要创建一个。

答案 1 :(得分:0)

Web控制台使用SSH进行连接,因此您仍然需要设置SSH密钥。在未配置SSH密钥且在安全组中打开端口22的情况下,唯一的连接方法是使用AWS Systems Manager会话管理器,但这要求在EC2实例上运行SSM代理,并为该实例分配适当的IAM角色。 / p>