이번에 계속 만들고 있는 프로젝트에서 여러 AWS 구성들을 테라폼으로 관리하기 위해 테라폼을 공부해보고 있다. 일단 https://blog.outsider.ne.kr/1301 분의 엄청난 블로그를 따라하면서 EC2를 만들어 보고 있었다. 분명 EC2, VPC등은 잘 만들어져서 SSH로 테스트 하고 싶은데 이상하게 자꾸 접속이 안되었다.
ap-northeast-2.compute.amazonaws.com: Permission denied (publickey).
자꾸 이런 오류만 뜨면서 안되는 것이었다. 여러가지방법인
chmod 400 {pem.key}
chmod 600 {pem.key}
chmod 777 {pem.key}
등의 여러 방법을 시도 했으나 당연히 안되었다. 나는 ubuntu만 사용하기에 당연히 root user도 ubuntu였다. 고로 아무래도 내가 key를 만드는 방식에 문제가 있거나 접속하는데 문제가 있다고 생각을 하였다.
resource "tls_private_key" "cicd_make_key" {
algorithm = "RSA"
rsa_bits = 4096
}
resource "aws_key_pair" "cicd_make_keypair" {
key_name = "test2"
public_key = tls_private_key.cicd_make_key.public_key_openssh
}
resource "local_file" "cicd_downloads_key" {
filename = "test.pem"
content = tls_private_key.cicd_make_key.private_key_pem
}
기존에는 이런식으로 키를 만들었었다. 이것은
https://velog.io/@salgu1998/Terraform%EC%9C%BC%EB%A1%9C-AWS-EC2-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0
이 블로그에 있는 key 만드는 방식을 따라하였다.
분명 잘 되는 것은 맞는데 내가 너무 멍청해 이것을 어떻게 적용하는지 몰랐다. 고로
이 블로그에 나와있는 방식을 이용하였다.
먼저 ssh-keygen을 이용해서 키를 만들고 그 값으로 퍼블릭키 값을 넣어주었다
resource "aws_key_pair" "terraform-key-pair" {
key_name = "tf-key-pair"
# public_key = "{.pub 파일 내용}"
public_key = "ssh-rsa ~~~=="
tags = {
description = "terraform key pair import"
}
}
그런다음에 ssh로 로그인을 할때
ssh -i "tf-key-pair" ubuntu@ec2-3-39-86-70.ap-northeast-2.compute.amazonaws.com
이런식으로 로그인하니깐 잘 들어가졌다.
위에의 방식으로는 왜 안되었을까. tf-key-pair.pem으로 해서 안되는것이었나..?
ㅠㅠ