Рейтинг:0

Невозможно подключиться по SSH к экземпляру EC2, созданному Terraform.

флаг se

Использование Terraform v1.0.11 в Ubuntu 18.04

После применить терраформ с main.tf ниже, и после ожидания прохождения проверок инстансом (и затем еще минуту) попытки SSH упираются в стену.

$ ssh -v -i ~/.ssh/toydeploy.pem [email protected]
OpenSSH_7.6p1 Ubuntu-4ubuntu0.5, OpenSSL 1.0.2n 7 декабря 2017 г.
debug1: Чтение данных конфигурации /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug1: подключение к порту 22 18.144.125.224 [18.144.125.224].
debug1: подключиться к адресу 18.144.125.224, порт 22: время ожидания подключения истекло
ssh: подключиться к хосту 18.144.125.224, порт 22: время ожидания подключения истекло

Я создал экземпляр вручную с тем же AMI и парой ключей и могу подключиться по SSH.Сравнивая настройки сети и безопасности в консоли, единственное различие, которое я заметил, заключается в том, что экземпляр, развернутый вручную, использует VPC по умолчанию, а «Ответить DNS-имя частного ресурса» показывает «IPv4 (A)» для экземпляра, развернутого вручную. и "-" для терраформированного. Оба кажутся доброкачественными, но я могу ошибаться.

терраформировать {
  required_providers {
    авс = {
      источник = "hashicorp/aws"
      версия = "~> 3.27"
    }
  }
}

провайдер "aws" {
  профиль = "по умолчанию"
  регион = "США-запад-1"
}

переменная "cidr_vpc" {
  description = "Блок CIDR для VPC"
  по умолчанию = "10.1.0.0/16"
}

переменная "cidr_subnet" {
  description = "Блок CIDR для подсети"
  по умолчанию = "10.1.0.0/20"
}

ресурс "aws_vpc" "toydeploy-vpc" {
  cidr_block = var.cidr_vpc
  enable_dns_hostnames = правда
  enable_dns_support = истина
}

ресурс "aws_subnet" "toydeploy-subnet" {
  vpc_id = aws_vpc.toydeploy-vpc.id
  cidr_block = var.cidr_subnet
}

ресурс "aws_security_group" "toydeploy-sg" {
  имя = "toydeploy-sg"
  vpc_id = aws_vpc.toydeploy-vpc.id

  вход {
    от_порт = 22
    to_port = 22
    протокол = "TCP"
    cidr_blocks = [
      "0.0.0.0/0"
    ]
  }

  # Terraform удаляет правило по умолчанию, поэтому мы добавляем его заново.
  выход {
    из_порта = 0
    to_port = 0
    протокол = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

ресурс "aws_instance" "toydeploy" {
  ами = "ами-083f68207d3376798" # Ubuntu 18.04
  instance_type = "t2.micro"
  security_groups = ["${aws_security_group.toydeploy-sg.id}"]
  subnet_id = aws_subnet.toydeploy-subnet.id
  Associate_public_ip_address = истина
  key_name = "игрушкаразвертывание"
}

Если ниже ничего не будет проблемой, и вы можете указать мне на рабочий пример, это тоже будет оценено.

Решено

При ближайшем рассмотрении оказалось, что в таблице маршрутизации указана только маршрутизация для подсети, а не 0.0.0.0/0. Добавление следующего решило проблему.

ресурс "aws_internet_gateway" "toydeploy-ig" {
  vpc_id = aws_vpc.toydeploy-vpc.id
}

ресурс "aws_route_table" "toydeploy-rt" {
  vpc_id = aws_vpc.toydeploy-vpc.id
  маршрут {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.toydeploy-ig.id
  }
}

ресурс "aws_route_table_association" "toydeploy-rta" {
  subnet_id = aws_subnet.toydeploy-subnet.id
  route_table_id = aws_route_table.toydeploy-rt.id
}
Рейтинг:0
флаг gp
Tim

Превышение времени ожидания подключения обычно указывает на проблему с сетью. Проверять:

  • Группа безопасности / NACL открыты для вашего IP-адреса на порту 22
  • VPC имеет интернет-шлюз
  • Подсеть имеет маршрут к интернет-шлюзу
  • Экземпляр имеет общедоступный IP-адрес
  • Маршрутизация настроена правильно

Это ключевая строка вашей попытки подключения, которая говорит вам, что происходит.

ssh: подключиться к хосту 18.144.125.224, порт 22: время ожидания подключения истекло
флаг se
Действительно, как предполагает ваше редактирование, это была маршрутизация.
Tim avatar
флаг gp
Tim
Да, это должна была быть одна из тех основ, я пропустил маршрутизацию в первоначальном списке. Указание на ошибку тайм-аута, возможно, помогло вам решить ее :)
флаг cn
это мне очень помогло, застрял на 3 часа......спасибо....дай бог тебе 100000000000$ каждый год

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.