我正在尝试使用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.
其中mykey
和1.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代码有问题,所以如果有人可以确认这不是代码问题,那么我认为可以将其关闭并转移到另一块板上,因为这不是代码问题,对吗?
答案 0 :(得分:0)
您尚未提供key_name来指示要使用的SSH密钥对。
如果您没有现有的aws_key_pair,则还需要创建一个。
答案 1 :(得分:0)
Web控制台使用SSH进行连接,因此您仍然需要设置SSH密钥。在未配置SSH密钥且在安全组中打开端口22的情况下,唯一的连接方法是使用AWS Systems Manager会话管理器,但这要求在EC2实例上运行SSM代理,并为该实例分配适当的IAM角色。 / p>