사이드 프로젝트가 어느정도 완성이 되었다.
그래서 AWS EC2 프리티어 버전을 사용하여 서버에 배포를 해보려고 한다.
EC2와 CI/CD 개념 및 생성 등 다른 블로그에 자세히 있기 때문에 생략!
❗Ubuntu 버전 20.04 이상은 본 포스터를 다 읽고 진행하시길..❗
EC2 인스턴스에 접속하여, 아래 코드를 입력한다.
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
이 명령어를 입력하면 비밀 키(private key)와 공개 키(public key)가 생성된다.
로컬에서 생성된 id_rsa.pub 파일의 내용을 복사합니다:
$ cat ~/.ssh/id_rsa.pub
GitHub로 이동하여, Settings > SSH and GPG keys에서 New SSH Key 버튼을 클릭하고 복사한 값을 추가합니다.
(ssh ~~ 로 시작하는 암호를 모두 복사 붙여넣기 한다)
잘 연결 되었는지 확인해 보고 싶다면
$ ssh -T git@github.com

문구가 나온다면 연결은 성공한 것이다!
이제 EC2에도 공개키를 등록해줘야 한다.
EC2 인스턴스로 접속한 후,
$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
등록하지 않을 경우 빌드 과정에서 아래와 같이 에러가 발생한다.
그러므로 꼭 SSH 공개키를 추가해줘야 한다.
error copy file to dest: ***, error message: ssh: handshake failed: ssh: unable to authenticate, attempted methods [publickey none], no supported methods remain
EC2 인스턴스에서
$ cat ~/.ssh/id_rsa 코드 입력 후 나오는 암호를 전부 복사한다.

❗정말정말 전부 다 복사해야 한다❗
(gpt가 알려줄 때 잘 읽었어야 했는데.. 미안해 무시하고 계속 물어봐서..)
프로젝트 레포지토리에 접속한 후, Setting -> Secrets and variables -> Actions 로 들어간다.
New repository secret을 클릭하여, 내가 필요한 시크릿 키값 만큼 생성한다. 예시로 Key를 생성해 보자!

무조건 전부 복사한다!!
.github -> workflows -> 파일이름.yml 의 경로로에 생성해야 한다.
내용을 내 프로젝트 레포지토리 Action 탭에 템플릿이 등록되어 있다. 그것을 활용해서 시작하면 된다.
모두 설정이 됐다면, git push 후 Action 탭에서 진행 사항을 확인하면 된다.
대충 연결의 흐름은 총 다섯가지로 정리해볼 수 있는 것 같다!
이제 빌드+테스트 -> 배포까지 다 끝났겠지?
결과는!
뭐가 문제인가.. 후 들어가 보자!

error copy file to dest: *** error message: ssh: handshake failed: ssh unable to authenticate, attempted methods [none publickey], no supported methods remain
대충 ssh 라는 말이 나오는 것을 보니 인증이 안되는 거 같다.
근데 왜 안되지..? 분명히 SSH 키 등록했는데..."
고려사항은 모두 다 찾아봤다.
다시 해보자는 생각으로 약 위 가정을 10번은 넘게 진행한 것 같다...
정말 왜 안되지.. 구글, gpt 모두 물어보아도 해결이 안됐다.. 😂
약 2일간 해결 못한 체 시간을 낭비했다.. 오픈 채팅방을 통해 위 이야기를 모두 공유했다. 그 결과 한 분께서 한 github 링크를 첨부해 주셔서 그 내용을 바탕으로 진행했다.

이 내용 그냥.. 지나쳤던 내용인데, 모르겠다. 그냥 해보자!
# key 생성
$ ssh-keygen -t ed25519 -a 200 -C "your_email@example.com"
# 공개키 등록
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
이 코드를 통해 암호를 다시 생성했다.
RSA는 호환성이 뛰어나고 여전히 많이 사용된다.ED25519는 보안성이 높고 효율적인 최신 알고리즘
생성된 암호를 위 과정을 거쳐 다시 진행했다.

SSH key는 두 종류이다.
공개키는 Github > Setting > SSH와 EC2 ~/.ssh/authorized_keys에 등록
비밀키는 Github > 진행중인 프로젝트 repository > Setting > Secrets and variables > actions 등록하기
너무 허무했다.. 왜지 왜! 됐을까🤔
github 블로그의 내용을 자세히 읽어보았다.
Ubuntu 20.04.. 라는 내용이 보였다.
설마.. 하는 생각으로 내 EC2 우분투 버전을 확인한 결과,
$ cat /etc/os-release

우분투 버전이 20 이상이었다 😂
많은 것을 깨닫는 순간이었다!
공식문서를 잘 활용하는 개발자가 되자!

빌드 성공! 이제 배포 해결하러가자:)