Home > Software engineering >  I can't ssh into my newly created EC2 instance and can't figure it out for the life of me
I can't ssh into my newly created EC2 instance and can't figure it out for the life of me

Time:04-13

I really can't figure out why I'm unable to SSH into my newly created EC2 instance and can't figure out why for the life of me.

Here is some of my code in Terraform where I created the EC2 and security groups for it. This is my EC2 code

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"
  }

}

Here is the code for my security group

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"
  }
}

If I need to provide any more code or information I can, it's my first time trying to do this and it's frustrating trying to figure it out. I'm trying to use Putty as well and not sure if I just don't know how to use it correctly or if it's something wrong with my EC2 configuration.

I used my public ssh key from my computer for the variable in my aws_key_pair resource. I saved my public ssh key pair as a .ppk file for putty and on my aws console when I go to "connect" it says to use [email protected] for my host name in Putty which I did and when I click okay and it tries to connect it gets a network error connection timed out

CodePudding user response:

I used my public ssh key

You need to use your private key, not public.

use [email protected]

10.0.0.100 is private IP address. To be able to connect to your instance over the internet you need to use public IP address.

  • Related