Puncte:0

Nu se poate face SSH într-o instanță EC2 creată de Terraform

drapel se

Folosind Terraform v1.0.11 pe Ubuntu 18.04

Dupa o se aplică terraform cu principal.tf de mai jos și după ce ați așteptat ca instanța să treacă verificări (și apoi încă un minut), încercările de SSH lovesc un perete.

$ ssh -v -i ~/.ssh/toydeploy.pem [email protected]
OpenSSH_7.6p1 Ubuntu-4ubuntu0.5, OpenSSL 1.0.2n 7 decembrie 2017
debug1: Citirea datelor de configurare /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config linia 19: Se aplică opțiuni pentru *
debug1: se conectează la 18.144.125.224 [18.144.125.224] portul 22.
depanare1: conectați-vă la adresa 18.144.125.224 portul 22: conexiunea a expirat
ssh: conectați-vă la gazda 18.144.125.224 portul 22: conexiune a expirat

Am adus manual o instanță cu aceeași AMI și pereche de chei și pot SSH.Comparând setările de rețea și de securitate din consolă, singurele diferențe pe care le-am observat sunt că instanța implementată manual folosește VPC-ul implicit, iar „Răspundeți la numele DNS al resursei private” arată „IPv4 (A)” pentru instanța implementată manual. și „-” pentru cel Terraformat. Ambele par benigne, dar s-ar putea să mă înșel.

terraform {
  furnizori_obligatori {
    aws = {
      sursa = "hashicorp/aws"
      versiune = "~> 3.27"
    }
  }
}

furnizorul „aws” {
  profil = „implicit”
  regiune = "us-west-1"
}

variabila „cidr_vpc” {
  description = „Bloc CIDR pentru VPC”
  implicit = „10.1.0.0/16”
}

variabila „cidr_subnet” {
  description = "Bloc CIDR pentru subrețea"
  implicit = "10.1.0.0/20"
}

resursă „aws_vpc” „toydeploy-vpc” {
  cidr_block = var.cidr_vpc
  enable_dns_hostnames = adevărat
  enable_dns_support = adevărat
}

resursă „aws_subnet” „toydeploy-subnet” {
  vpc_id = aws_vpc.toydeploy-vpc.id
  cidr_block = var.cidr_subnet
}

resursă „aws_security_group” „toydeploy-sg” {
  nume = "toydeploy-sg"
  vpc_id = aws_vpc.toydeploy-vpc.id

  intrare {
    din_port = 22
    spre_port = 22
    protocol = "tcp"
    cidr_blocks = [
      „0.0.0.0/0”
    ]
  }

  # Terraform elimină regula implicită, așa că o re-adăugăm.
  iesire {
    din_port = 0
    spre_port = 0
    protocol = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resursa „aws_instance” „toydeploy” {
  ami = "ami-083f68207d3376798" # Ubuntu 18.04
  tip_instanță = "t2.micro"
  security_groups = ["${aws_security_group.toydeploy-sg.id}"]
  subnet_id = aws_subnet.toydeploy-subnet.id
  asociate_public_ip_address = adevărat
  key_name = "toydeploy"
}

Dacă nimic de mai jos nu reiese ca o problemă și îmi puteți indica un exemplu de lucru, și acesta ar fi apreciat.

Rezolvat

O examinare mai atentă a arătat că tabelul de rutare a fost rutat numai pentru subrețea și nu 0.0.0.0/0. Adăugarea următoarelor a rezolvat problema.

resursă „aws_internet_gateway” „toydeploy-ig” {
  vpc_id = aws_vpc.toydeploy-vpc.id
}

resursă „aws_route_table” „toydeploy-rt” {
  vpc_id = aws_vpc.toydeploy-vpc.id
  traseu {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.toydeploy-ig.id
  }
}

resursa „aws_route_table_association” „toydeploy-rta” {
  subnet_id = aws_subnet.toydeploy-subnet.id
  route_table_id = aws_route_table.toydeploy-rt.id
}
Puncte:0
drapel gp
Tim

Conexiunea expirată indică de obicei o problemă de rețea. Verifica:

  • Grupul de securitate/NACL-urile se deschid către IP-ul tău pe portul 22
  • VPC are gateway de internet
  • Subrețeaua are o rută către gateway-ul de internet
  • Instanța are un IP public
  • Rutarea este configurată corect

Aceasta este linia cheie din încercarea dvs. de conectare care vă spune ce se întâmplă

ssh: conectați-vă la gazda 18.144.125.224 portul 22: conexiune a expirat
drapel se
Într-adevăr, după cum sugerează editarea dvs., era rutare.
Tim avatar
drapel gp
Tim
Da, urma să fie unul dintre acele elemente de bază, am ratat rutarea în lista inițială. Sublinierea erorii de timeout te-ar fi putut ajuta să o rezolvi :)
drapel cn
asta m-a ajutat foarte mult, am ramas blocat timp de 3 ore......multumesc....sa va dea Dumnezeu 100000000000$ in fiecare an

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.