Я создал экземпляр aws ec2 с terraform, теперь я не могу подключиться к машине по SSH

Я создал экземпляр aws ec2 с terraform, теперь я не могу подключиться к машине по SSH. это код терраформа, который я использовал, регионы, которые я считаю правильными

resource "aws_key_pair" "test-terraform" {
  key_name   = "test-terraform"
  public_key = file("~/Documents/key-pairs/test-terraform.pub")
}

resource "aws_vpc" "main" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"

  tags = {
    Name = "main"
  }
}

resource "aws_subnet" "main_subnet" {
  vpc_id     = aws_vpc.main.id         # reference the related VPC id here
  cidr_block = "10.0.1.0/24"
  availability_zone = "us-east-1a"     # optional

  tags = {
    Name = "main_subnet"
  }
}

resource "aws_security_group" "main_security_group" {

  name = "main-security-group"
  description = "Security group for ec2 instances"
  vpc_id = aws_vpc.main.id     # reference the related VPC id 

  tags = {
    Name = "main_security_group"
  }

  # Allow all outbound traffic
  egress {
    from_port = 0
    to_port   = 0
    protocol = "-1"              
    cidr_blocks = ["0.0.0.0/0"]
  }

  # Allow SSH inbound traffic
  ingress {
    from_port = 0
    to_port   = 0
    protocol = "-1"
    cidr_blocks = ["0.0.0.0/0"] # You can restrict this to specific IP addresses for better security
  }

}

resource "aws_instance" "web_server" {
  ami           = "ami-080e1f13689e07408" # Update with your desired AMI ID
  instance_type = "t2.micro"

  vpc_security_group_ids = [aws_security_group.main_security_group.id]
  subnet_id = aws_subnet.main_subnet.id  # Associate with the public subnet
  associate_public_ip_address = true  # Allocate a public IP address to the instance
  key_name = aws_key_pair.test-terraform.key_name  # ti add jkey from referencing it, key must be generated locally and the public key must be referenced check the block below

  # Optional but good security measure
#   metadata_options {
#     http_tokens     = "required"  # Require the use of IMDSv2
#     http_put_response_hop_limit = 1  # Ensure only one hop for HTTP PUT requests
#   }

  # Add tags (optional)
  tags = {
    Name = "Web Server Instance"
  }
}

output "public_ip" {
  value = aws_instance.web_server.public_ip
}

Я проверил сеть, вроде все в порядке, Даже консоль Aws не может подключиться, что говорит мне о том, что проблема не в ключе. возможно, это глупая ошибка, но я с нетерпением жду решения

У вас нет интернет-шлюза. См. Шаг 3. Настройка интернет-шлюза здесь.

jarmod 09.04.2024 17:54

Спасибо за подсказку, я добавил эту часть `resource "aws_internet_gateway" "main_internet_gateway" { vpc_id = aws_vpc.main.id } resources "aws_route_table" "main_route_table" { vpc_id = aws_vpc.main.id Route { cidr_block = "0.0. 0.0/0" шлюз_ид = aws_internet_gateway.main_internet_gateway.id } } ресурс "aws_route_table_association" "main_route_association" { subnet_id = aws_subnet.main_subnet.idroute_table_id = aws_route_table.main_route_table.id } `

Sakrine 09.04.2024 18:26

Устранило ли вашу проблему добавление IGW и соответствующей записи таблицы маршрутизации общедоступной подсети с маршрутом по умолчанию к IGW?

jarmod 09.04.2024 18:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем шаблоне Terraform отсутствует несколько вещей, необходимых для входящего и исходящего сетевого трафика, а именно:

  1. Интернет-шлюз (IGW)
  2. запись таблицы маршрутов для ваших общедоступных подсетей с маршрутом по умолчанию к IGW

Вы можете легко добавить их, примерно так:

resource "aws_internet_gateway" "igw" {
  vpc_id = aws_vpc.main.id
 
  tags = {
    Name = "VPC IGW"
  }
}

resource "aws_route_table" "rtb2" {
  vpc_id = aws_vpc.main.id
 
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.igw.id
  }
 
  tags = {
    Name = "Route Table 2 for IGW"
  }
}

Вопрос не соответствует теме Stack Overflow, как это определено в справочном центре . Пожалуйста, не отвечайте на такие вопросы; вместо этого вам следует пометить их как требующие внимания, и они будут закрыты или перенесены соответствующим образом.

Toby Speight 10.04.2024 09:26

Другие вопросы по теме