我无法通过 ssh 连接到我新创建的 EC2 实例,并且无法在我的生命中弄清楚它



我真的不明白为什么我不能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配置有问题。

我在aws_key_pair资源中使用了计算机上的公共ssh密钥作为变量。当我转到";"连接";上面写着使用ubuntu@10.0.0.100对于我在Putty中使用的主机名,当我单击"确定"并尝试连接时,会出现网络错误连接超时

我使用了我的公共ssh密钥

您需要使用私钥,而不是公钥。

使用ubuntu@10.0.0.100

10.0.0.100是私有IP地址。为了能够通过互联网连接到您的实例,您需要使用公共IP地址。

最新更新