Creé una instancia AWS EC2 para configurar Prometheus en ella, creé un nuevo par de claves ssh y aprovisioné la instancia usando terraform, usé el tipo de instancia "t3.large" y un disco SSD de 120 GB y el sistema operativo es Ubuntu 18.04, y Podría enviar ssh a la instancia normalmente. Hasta ahora todo está bien.
Después de un tiempo instalando Prometheus y Grafana usando la ventana acoplable, vuelvo a la instancia y descubro que no puedo iniciar sesión. Recibo el siguiente problema:
ssh: connect to host [ip] port 22: Connection timed out
Estoy seguro de que no se trata de un problema de conexión a Internet, ya que puedo acceder a otras instancias mediante ssh. y el problema es el mismo cuando se usa la dirección IP o DNS, el puerto 22 también está abierto.
Este es el script de terraform que utilicé, pero no creo que esté relacionado con esto:
provider "aws" {
profile = "default"
region = "eu-west-1"
}
resource "aws_key_pair" "ubuntu" {
key_name = "ubuntu"
public_key = file("ubuntu.pem.pub")
}
resource "aws_security_group" "ubuntu" {
name = "ubuntu-security-group"
description = "Allow HTTP, HTTPS and SSH traffic"
ingress {
description = "SSH"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "HTTPS"
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "HTTP"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "HTTP"
from_port = 3000
to_port = 3000
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "HTTP"
from_port = 9090
to_port = 9090
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "HTTP"
from_port = 9100
to_port = 9100
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 = "terraform"
}
}
resource "aws_instance" "ubuntu" {
key_name = aws_key_pair.ubuntu.key_name
ami = "ami-0dc8d444ee2a42d8a"
instance_type = "t3.large"
tags = {
Name = "ubuntu-prometheus"
}
vpc_security_group_ids = [
aws_security_group.ubuntu.id
]
connection {
type = "ssh"
user = "ubuntu"
private_key = file("key")
host = self.public_ip
}
ebs_block_device {
device_name = "/dev/sda1"
volume_type = "gp2"
volume_size = 120
}
}
resource "aws_eip" "ubuntu" {
vpc = true
instance = aws_instance.ubuntu.id
}
Respuesta1
Finalmente descubrí el problema y obtuve acceso a mi instancia EC2 nuevamente con todos los datos tal como los dejé como estaban.
La razón detrás de este problema es que para permitir el tráfico http en un nuevo puerto utilicé ufw
el cual habilita el firewall, y la regla para permitir ssh no está incluida, ufw
lo que provoca la pérdida de acceso. Podría haber usado los grupos de seguridad de AWS y haber agregado la regla correcta para evitar todo esto.
La solución fue crear una nueva instancia EC2 y montar el volumen de la antigua instancia EC2 en esta nueva instancia creada.
Enumere los discos disponibles de la siguiente manera:
buntu@ip-172-31-27-78:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 97.8M 1 loop /snap/core/10185
loop1 7:1 0 28.1M 1 loop /snap/amazon-ssm-agent/2012
nvme0n1 259:0 0 120G 0 disk
└─nvme0n1p1 259:1 0 120G 0 part /
nvme1n1 259:2 0 120G 0 disk
└─nvme1n1p1 259:3 0 120G 0 part
Después de esto, monte su partición en cualquier directorio:
$ sudo mkdir /data
$ sudo mount /dev/nvme1n1p1 /data/
Ahora podrá acceder a los archivos de su volumen, para permitir el acceso ssh, edite los archivos user.rules
ubicados user6.rules
en el directorio /data/etc/ufw
y agregue estas líneas:
#user.rules
-A ufw-user-input -p tcp --dport 22 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -j ACCEPT
user6.rules
-A ufw6-user-input -p tcp --dport 22 -j ACCEPT
-A ufw6-user-input -p udp --dport 22 -j ACCEPT
Felicitaciones aesta publicaciónquien me ayudó mucho y recopilé todos los pasos aquí.