Ao trabalhar com infraestrutura de nuvem, a seguranca e de extrema importancia. Um aspecto critico da seguranca e controlar o acesso aos recursos de nuvem, e isso e particularmente importante ao trabalhar com instancias AWS EC2. As chaves SSH sao uma forma de proteger o acesso as instancias EC2 e, com o Terraform, e simples criar e gerenciar essas chaves.

As chaves SSH sao usadas para acesso seguro a uma instancia EC2 e consistem em duas partes - uma chave publica e uma chave privada. A chave publica e enviada para a instancia EC2 e a chave privada e usada para autenticar com a instancia. A chave privada deve ser mantida em seguranca e nao compartilhada com mais ninguem.

O Terraform e uma ferramenta poderosa para gerenciar infraestrutura como codigo e pode ser usado para criar e gerenciar chaves SSH para acesso seguro a instancias AWS EC2. Veja como fazer isso.

Primeiro, crie um par de chaves SSH. Isso pode ser feito com o comando ssh-keygen na sua maquina local. Para gerar um par de chaves RSA com tamanho de 4096 bits, execute o seguinte comando:

ssh-keygen -t rsa -b 4096

Isso gerara uma chave publica e uma chave privada no diretorio .ssh no seu diretorio home. A chave publica tem a extensao .pub e deve ser enviada para a instancia EC2.

Em seguida, crie um modulo Terraform para gerenciar a chave SSH. O modulo deve incluir o seguinte codigo:

resource "aws_key_pair" "ssh_key" {
  key_name   = "ssh_key"
  public_key = file("~/.ssh/id_rsa.pub")
}

Isso cria um recurso de par de chaves AWS com o nome "ssh_key" e envia a chave publica da maquina local para a AWS. A funcao file() e usada para ler o conteudo do arquivo de chave publica na maquina local.

O proximo passo e referenciar a chave SSH no recurso da instancia EC2. Isso pode ser feito com o parametro key_name no recurso aws_instance:

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  key_name      = aws_key_pair.ssh_key.key_name

// outras configuracoes da instancia }

Isso cria uma instancia EC2 com a AMI e o tipo de instancia especificados e associa a chave SSH a instancia usando o parametro key_name. O valor de aws_key_pair.ssh_key.key_name e uma referencia ao nome do recurso de par de chaves criado no passo anterior.

Por fim, inicialize o modulo Terraform com terraform init e aplique as alteracoes com terraform apply. O Terraform criara o recurso de par de chaves SSH e o recurso de instancia EC2 com a chave SSH associada.

Com esta configuracao, voce agora pode acessar com seguranca a instancia EC2 usando a chave privada gerada anteriormente. Para fazer isso, use o comando ssh na sua maquina local:

ssh -i ~/.ssh/id_rsa ec2-user@<ip_publico_da_instancia>

Isso conectara a instancia EC2 usando a chave privada e o usuario padrao ec2-user. Substitua <ip_publico_da_instancia> pelo endereco IP publico da instancia EC2.

Em resumo, usar chaves SSH para acesso seguro a instancias AWS EC2 e uma parte crucial da seguranca da infraestrutura de nuvem. Com o Terraform, e simples criar e gerenciar essas chaves como parte da sua infraestrutura como codigo. Seguindo os passos descritos neste artigo, voce pode garantir acesso seguro as suas instancias EC2 e proteger sua infraestrutura de nuvem.