1. AWS EC2에서 깃허브로 소스코드 PUSH 하기

두 번째 사이드 프로젝트를 진행하기 위해 AWS EC2 ubuntu 환경을 사용하였다. 아직 클라우드 환경에 익숙하지 않지만 (조만간 aws 무료 컨퍼런스를 수강할 예정이다.) 고생하면서 배워간다는 마음으로 낯선 에러들을 마주하며 해결하려고 한다. 본론으로 넘어가서 ec2에서 작업한 코드를 원격 저장소에 올리려면 어떻게 해야할 까? ec2도 마찬가지로 가상 컴퓨터에서 작업한 것이므로, 이를 하나의 로컬 저장소로 두고 원격 저장소와 연결하면 될 것이다. 

  1. 로컬 저장소(AWS EC2)에 Git을 설치한다.
  2. git add와 commit을 통해 파일을 저장한다.
  3. 연결한 원격 저장소로 PUSH 한다.

2번 작업은 로컬 저장소에서 하는 작업이기 때문에 크게 어렵지 않다. 하지만 원격 저장소와 연결해야 하는 3번의 경우 일반적인 방법과 조금 다르다. 여기서는 SSH(Secure Shell) 방식을 통해 접속해야 한다. 클라우드 서비스인 AWS EC2의 경우 사용자가 원격접속해야 하는 SSH 방식을 사용한다. 따라서 EC2에서 원격 저장소와 연결하기 위해서는 마찬가지로 SSH 방식을 사용해야 한다. (SSH는 원격 접속을 위해 보안 키를 사용한 암호화 된 네트워크 프로토콜이라고 생각하면 된다.)

 

0. gitignore 생성

필자의 경우, 올리지 않아야 할 파일들을 gitignore로 작성하였다. 이 때 작업 폴더 내에 .gitignore를 만들어야 파일 경로 작성이 간결해진다. (상대경로)

업로드에 필요한 app.js와 package.json을 제외한 나머지

1. git add 와 git commit

git을 설치하고 git init을 통해 로컬 저장소를 만들었다면 add 와 commit이 원활하게 동작한다. staged를 취소하려면 git rm --cached 파일명 -r

git add 작업폴더
git commit -m "message"

2. origin 설정 및 git push

여기서 기존의 방식대로 add remote 및 git push를 하면 에러가 발생한다.

앞서 말했듯이, SSH를 통한 원격연결이기 때문에 Git 인증 또한 SSH 방식을 따라야 한다. 해당 에러 메세지에서 나온 링크는 깃허브 공식 문서의 SSH 인증 방식에 대한 링크이다.

출처 : https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh

$ ssh-keygen -t ed25519 -C "깃허브 주소" // ssh 키 생성

원격 서버에서 인증하기 위한 방식으로, SSH 키를 생성하고 이를 에이전트에 추가해야 한다고 나와있다. 컴퓨터에 직접 SSH 키를 만들고 등록하면 된다. 이 때 비밀번호(passphrase)를 입력한다.

$ cat ~/.ssh/id_ed25519.pub

생성한 ssh 키에 대한 암호를 가져와서 깃허브 계정에서 SSH Key를 추가한다. (공식 계정에 더 자세하게 나와 있습니다.)

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

 

Adding a new SSH key to your GitHub account - GitHub Docs

About addition of SSH keys to your account You can access and write data in repositories on GitHub.com using SSH (Secure Shell Protocol). When you connect via SSH, you authenticate using a private key file on your local machine. For more information, see "

docs.github.com

$ ssh -T git@github.com

SSH Key가 정상적으로 추가되었는지 테스트 할 수 있다.

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection

 

Testing your SSH connection - GitHub Docs

Before testing your SSH connection, you should have: When you test your connection, you'll need to authenticate this action using your password, which is the SSH key passphrase you created earlier. For more information on working with SSH key passphrases,

docs.github.com

3. 기존의 remote 삭제, SSH로 remote 추가 및 연결

git remote -v // 현재 설정된 remote 확인
git remote remove origin // origin이라고 설정한 remote 삭제
git remote add origin 'git@github.com~, ssh 주소'
git push origin master

저장소 생성 후 초기화면

readme를 추가하지 않고 저장소를 생성하면 위와 같이 Quick Start 화면이 뜬다. 여기서 SSH 주소를 선택하면 git@github.com:사용자명/저장소이름.git 형식의 주소가 나타난다. 이를 복사하여 origin 주소로 설정한다.

정상적으로 push가 되었다.

https://zzang9ha.tistory.com/319

 

[Git / GitHub] - 로그인 없이 push 하기(SSH Key 설정)

• 안녕하세요~ 이전에 운영하던 블로그 및 GitHub, 공부 내용을 정리하는 Study-GitHub 가 있습니다! • 네이버 블로그 • GitHub • Study-GitHub • 🐔 ✔ GitHub SSH Key 설정하기 안녕하세요~ 이번에 정..

zzang9ha.tistory.com

4. 끝으로

점점 개발을 하면 할수록 공식 문서의 중요성을 알게 되는 것 같다. 이번 케이스도 사실 공식문서 보다 여러 블로그들을 먼저 참고했었다. 정말 좋은 글들이었지만 근본적인 문제를 해결하기 위해선 공식문서의 글들을 천천히 읽어보고 부족한 지식을 한글로 설명된 블로그를 통해 보완하는 것이 바람직한 방법인 것 같다. 물론 그전에 외국 블로그, 가급적 최신 글들을 접한다면 더 좋을 것이다.