Terraform으로 AWS EC2 인스턴스 보안 접근을 위한 SSH 키 생성하기
클라우드 인프라를 다룰 때 보안은 가장 중요하다. 보안의 중요한 측면 중 하나는 클라우드 리소스에 대한 접근을 제어하는 것이며, 이는 AWS EC2 인스턴스를 다룰 때 특히 중요하다.

클라우드 인프라를 다룰 때 보안은 가장 중요하다. 보안의 중요한 측면 중 하나는 클라우드 리소스에 대한 접근을 제어하는 것이며, 이는 AWS EC2 인스턴스를 다룰 때 특히 중요하다. SSH 키는 EC2 인스턴스에 대한 접근을 보호하는 한 가지 방법이며, Terraform을 사용하면 이러한 키를 쉽게 생성하고 관리할 수 있다.
SSH 키는 EC2 인스턴스에 대한 안전한 접근을 위해 사용되며, 공개 키와 비공개 키의 두 부분으로 구성된다. 공개 키는 EC2 인스턴스에 업로드되고, 비공개 키는 인스턴스 인증에 사용된다. 비공개 키는 안전하게 보관해야 하며 누구와도 공유해서는 안 된다.
Terraform은 Infrastructure as Code를 관리하는 강력한 도구이며, AWS EC2 인스턴스에 대한 보안 접근을 위한 SSH 키를 생성하고 관리하는 데 사용할 수 있다. 방법은 다음과 같다.
먼저 SSH 키 쌍을 생성한다. 이는 로컬 머신에서 ssh-keygen 명령으로 수행할 수 있다. 4096비트 키 크기의 RSA 키 쌍을 생성하려면 다음 명령을 실행한다:
ssh-keygen -t rsa -b 4096
이 명령은 홈 디렉토리의 .ssh 디렉토리에 공개 키와 비공개 키를 생성한다. 공개 키는 .pub 확장자를 가지며 EC2 인스턴스에 업로드되어야 한다.
다음으로 SSH 키를 관리하기 위한 Terraform 모듈을 생성한다. 모듈에는 다음 코드가 포함되어야 한다:
resource "aws_key_pair" "ssh_key" {
key_name = "ssh_key"
public_key = file("~/.ssh/id_rsa.pub")
}
이는 "ssh_key"라는 이름의 AWS 키 페어 리소스를 생성하고 로컬 머신의 공개 키를 AWS에 업로드한다. file() 함수는 로컬 머신의 공개 키 파일 내용을 읽는 데 사용된다.
다음 단계는 EC2 인스턴스 리소스에서 SSH 키를 참조하는 것이다. 이는 aws_instance 리소스의 key_name 파라미터로 수행할 수 있다:
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
key_name = aws_key_pair.ssh_key.key_name
// 기타 인스턴스 구성
}
이는 지정된 AMI와 인스턴스 타입으로 EC2 인스턴스를 생성하고, key_name 파라미터를 사용하여 SSH 키를 인스턴스에 연결한다. aws_key_pair.ssh_key.key_name의 값은 이전 단계에서 생성된 키 페어 리소스의 이름에 대한 참조다.
마지막으로 terraform init으로 Terraform 모듈을 초기화하고, terraform apply로 변경 사항을 적용한다. Terraform은 SSH 키 페어 리소스와 연결된 SSH 키가 포함된 EC2 인스턴스 리소스를 생성할 것이다.
이 설정으로 이제 앞서 생성한 비공개 키를 사용하여 EC2 인스턴스에 안전하게 접근할 수 있다. 이를 위해 로컬 머신에서 ssh 명령을 사용한다:
ssh -i ~/.ssh/id_rsa ec2-user@<instance_public_ip>
이는 비공개 키와 기본 사용자 ec2-user를 사용하여 EC2 인스턴스에 연결한다. <instance_public_ip>를 EC2 인스턴스의 퍼블릭 IP 주소로 교체하라.
요약하자면, AWS EC2 인스턴스에 대한 보안 접근을 위해 SSH 키를 사용하는 것은 클라우드 인프라 보안의 중요한 부분이다. Terraform을 사용하면 이러한 키를 Infrastructure as Code의 일부로 쉽게 생성하고 관리할 수 있다. 이 글에서 설명된 단계를 따르면 EC2 인스턴스에 대한 안전한 접근을 보장하고 클라우드 인프라를 보호할 수 있다.
Ercan의 다른 글
같은 저자, 다른 영역의 사이트 두 개.