Score: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 ธ.ค. 2560
debug1: อ่านข้อมูลการกำหนดค่า /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config บรรทัดที่ 19: การใช้ตัวเลือกสำหรับ *
debug1: กำลังเชื่อมต่อกับพอร์ต 18.144.125.224 [18.144.125.224] 22
debug1: เชื่อมต่อกับที่อยู่ 18.144.125.224 พอร์ต 22: การเชื่อมต่อหมดเวลา
ssh: เชื่อมต่อกับโฮสต์ 18.144.125.224 พอร์ต 22: การเชื่อมต่อหมดเวลา

ฉันสร้างอินสแตนซ์ด้วยตนเองด้วย AMI และคู่คีย์เดียวกัน และสามารถใช้ SSH ได้เมื่อเปรียบเทียบการตั้งค่าเครือข่ายและความปลอดภัยในคอนโซล ข้อแตกต่างเพียงอย่างเดียวที่ฉันสังเกตเห็นคืออินสแตนซ์ที่ปรับใช้ด้วยตนเองนั้นใช้ VPC เริ่มต้น และ "ตอบชื่อ DNS ของทรัพยากรส่วนตัว" แสดง "IPv4 (A)" สำหรับอินสแตนซ์ที่ปรับใช้ด้วยตนเอง และ "-" สำหรับ Terraformed ทั้งสองดูเหมือนไม่เป็นพิษเป็นภัย แต่ฉันอาจคิดผิด

พื้นผิว {
  required_providers {
    aws = {
      ที่มา = "hashicorp/aws"
      รุ่น = "~> 3.27"
    }
  }
}

ผู้ให้บริการ "aws" {
  โปรไฟล์ = "ค่าเริ่มต้น"
  ภูมิภาค = "เรา-ตะวันตก-1"
}

ตัวแปร "cidr_vpc" {
  คำอธิบาย = "บล็อก CIDR สำหรับ VPC"
  ค่าเริ่มต้น = "10.1.0.0/16"
}

ตัวแปร "cidr_subnet" {
  คำอธิบาย = "บล็อก 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

  ขาเข้า {
    from_port = 22
    to_port = 22
    โปรโตคอล = "tcp"
    cidr_blocks = [
      "0.0.0.0/0"
    ]
  }

  # Terraform ลบกฎเริ่มต้น เราจึงเพิ่มใหม่อีกครั้ง
  ทางออก {
    from_port = 0
    to_port = 0
    โปรโตคอล = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

ทรัพยากร "aws_instance" "toydeploy" {
  ami = "ami-083f68207d3376798" # อูบุนตู 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 = "toydeploy"
}

หากไม่มีสิ่งใดด้านล่างที่แสดงว่าเป็นปัญหา และคุณสามารถชี้ให้ฉันเห็นตัวอย่างการทำงานได้ นั่นก็จะได้รับการชื่นชมเช่นกัน

แก้ไขแล้ว

การตรวจสอบอย่างละเอียดพบว่าตารางเส้นทางเป็นเพียงการจัดเส้นทางสำหรับซับเน็ตเท่านั้น ไม่ใช่ 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
}
Score:0
ธง gp
Tim

การเชื่อมต่อหมดเวลามักจะบ่งบอกถึงปัญหาเครือข่าย ตรวจสอบ:

  • กลุ่มความปลอดภัย / NACL เปิดให้ IP ของคุณที่พอร์ต 22
  • VPC มีเกตเวย์อินเทอร์เน็ต
  • เครือข่ายย่อยมีเส้นทางไปยังอินเทอร์เน็ตเกตเวย์
  • อินสแตนซ์มี IP สาธารณะ
  • การกำหนดเส้นทางถูกตั้งค่าอย่างถูกต้อง

นี่คือบรรทัดสำคัญจากความพยายามในการเชื่อมต่อของคุณที่จะบอกคุณว่าเกิดอะไรขึ้น

ssh: เชื่อมต่อกับโฮสต์ 18.144.125.224 พอร์ต 22: การเชื่อมต่อหมดเวลา
se flag
ตามที่การแก้ไขของคุณแนะนำ มันคือการกำหนดเส้นทาง
Tim avatar
gp flag
Tim
ใช่ มันจะเป็นหนึ่งในพื้นฐานเหล่านั้น ฉันพลาดการกำหนดเส้นทางในรายการเริ่มต้น การชี้ให้เห็นข้อผิดพลาดการหมดเวลาอาจช่วยให้คุณแก้ไขได้ :)
cn flag
สิ่งนี้ช่วยฉันได้มาก ติดอยู่ 3 ชั่วโมง......ขอบคุณ....พระเจ้าอาจให้เงินคุณ 100000000000$ ทุกปี

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา