我无法通过 ssh 进入我新创建的 EC2 实例,而且我这辈子都弄不明白
I can't ssh into my newly created EC2 instance and can't figure it out for the life of me
我真的想不通为什么我无法通过 SSH 连接到我新创建的 EC2 实例,而且我这辈子都想不通。
这是我在 Terraform 中的一些代码,我在其中为其创建了 EC2 和安全组。
这是我的 EC2 代码
resource "aws_key_pair" "AzureDevOps" {
key_name = var.infra_env
public_key = var.public_ssh_key
}
# Create network inferface for EC2 instance and assign secruity groups
resource "aws_network_interface" "vm_nic_1" {
subnet_id = var.subnet_id
private_ips = ["10.0.0.100"]
tags = {
Name = "${var.infra_env}-nic-1"
}
security_groups = [
var.ssh_id
]
}
# Add elastic IP addresss for public connectivity
resource "aws_eip" "vm_eip_1" {
vpc = true
instance = aws_instance.virtualmachine_1.id
associate_with_private_ip = "10.0.0.100"
depends_on = [var.gw_1]
tags = {
Name = "${var.infra_env}-eip-1"
}
}
# Deploy virtual machine using Ubuntu ami
resource "aws_instance" "virtualmachine_1" {
ami = var.ami
instance_type = var.instance_type
key_name = aws_key_pair.AzureDevOps.id
#retrieve the Administrator password
get_password_data = true
connection {
type = "ssh"
port = 22
password = rsadecrypt(self.password_data, file("id_rsa"))
https = true
insecure = true
timeout = "10m"
}
network_interface {
network_interface_id = aws_network_interface.vm_nic_1.id
device_index = 0
}
user_data = file("./scripts/install-cwagent.ps1")
tags = {
Name = "${var.infra_env}-vm-1"
}
}
这是我的安全组的代码
resource "aws_security_group" "ssh" {
name = "allow_ssh"
description = "Allow access to the instance via ssh"
vpc_id = var.vpc_id
ingress {
description = "Access the instance via ssh"
from_port = 22
to_port = 22
protocol = "TCP"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "${var.infra_env}-allow-ssh"
}
}
如果我需要提供更多的代码或信息,这是我第一次尝试这样做,并且试图弄清楚它是令人沮丧的。我也在尝试使用 Putty,但不确定是我不知道如何正确使用它,还是我的 EC2 配置有问题。
我使用计算机上的 public ssh 密钥作为 aws_key_pair 资源中的变量。我将 public ssh 密钥对保存为 putty 的 .ppk 文件,当我转到“连接”时在我的 aws 控制台上它说使用 ubuntu@10.0.0.100 作为我在 Putty 中的主机名我做到了,当我单击“确定”并尝试连接时,出现网络错误连接超时
I used my public ssh key
您需要使用您的私钥,而不是public。
use ubuntu@10.0.0.100
10.0.0.100
是私有 IP 地址。为了能够通过互联网连接到您的实例,您需要使用 public IP 地址。
我真的想不通为什么我无法通过 SSH 连接到我新创建的 EC2 实例,而且我这辈子都想不通。
这是我在 Terraform 中的一些代码,我在其中为其创建了 EC2 和安全组。 这是我的 EC2 代码
resource "aws_key_pair" "AzureDevOps" {
key_name = var.infra_env
public_key = var.public_ssh_key
}
# Create network inferface for EC2 instance and assign secruity groups
resource "aws_network_interface" "vm_nic_1" {
subnet_id = var.subnet_id
private_ips = ["10.0.0.100"]
tags = {
Name = "${var.infra_env}-nic-1"
}
security_groups = [
var.ssh_id
]
}
# Add elastic IP addresss for public connectivity
resource "aws_eip" "vm_eip_1" {
vpc = true
instance = aws_instance.virtualmachine_1.id
associate_with_private_ip = "10.0.0.100"
depends_on = [var.gw_1]
tags = {
Name = "${var.infra_env}-eip-1"
}
}
# Deploy virtual machine using Ubuntu ami
resource "aws_instance" "virtualmachine_1" {
ami = var.ami
instance_type = var.instance_type
key_name = aws_key_pair.AzureDevOps.id
#retrieve the Administrator password
get_password_data = true
connection {
type = "ssh"
port = 22
password = rsadecrypt(self.password_data, file("id_rsa"))
https = true
insecure = true
timeout = "10m"
}
network_interface {
network_interface_id = aws_network_interface.vm_nic_1.id
device_index = 0
}
user_data = file("./scripts/install-cwagent.ps1")
tags = {
Name = "${var.infra_env}-vm-1"
}
}
这是我的安全组的代码
resource "aws_security_group" "ssh" {
name = "allow_ssh"
description = "Allow access to the instance via ssh"
vpc_id = var.vpc_id
ingress {
description = "Access the instance via ssh"
from_port = 22
to_port = 22
protocol = "TCP"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "${var.infra_env}-allow-ssh"
}
}
如果我需要提供更多的代码或信息,这是我第一次尝试这样做,并且试图弄清楚它是令人沮丧的。我也在尝试使用 Putty,但不确定是我不知道如何正确使用它,还是我的 EC2 配置有问题。
我使用计算机上的 public ssh 密钥作为 aws_key_pair 资源中的变量。我将 public ssh 密钥对保存为 putty 的 .ppk 文件,当我转到“连接”时在我的 aws 控制台上它说使用 ubuntu@10.0.0.100 作为我在 Putty 中的主机名我做到了,当我单击“确定”并尝试连接时,出现网络错误连接超时
I used my public ssh key
您需要使用您的私钥,而不是public。
use ubuntu@10.0.0.100
10.0.0.100
是私有 IP 地址。为了能够通过互联网连接到您的实例,您需要使用 public IP 地址。