EC2 인스턴스에 프로젝트 배포 1

김성인·2023년 7월 4일
0

💭AWS

목록 보기
4/9

AWS EC2 인스턴스에 SSH 연결로 프로젝트를 배포하려는데 권한이 없을때 발생한 문제이다.

🌧 배포할 Git 프로젝트


🌧 권한 때문에 clone 불가능

해결 참고 스크랩


🌧 해결 방법

우선 ubuntu에 git을 설치하고 진행해야함

// 1) git 설치
$ sudo apt-get install git 

// 2) git config 설정
$ git config --global user.name "Git 이름"
$ git config --global user.email "Git 이메일"

// 3) SSH 개인/공개키 생성
$ ssh-keygen -t rsa -C "내 Git 이메일"

// 4) 키 생성 확인 (id_rsa : 개인키, id_rsa.pub : 공개키)
$ ls ~/.ssh

// 5) 내 Git 계정에 등록할 공개키를 확인
cat id_rsa.pub

1. 키 생성 완료

키 생성후 유저의 디렉터리 안에 .ssh 디렉터리 안에 저장됨

2. 키 생성 확인

.pub 확장자로 된 공개키 내용을 복사하여 git에 등록하면된다.

3. GitHub 계정에 공개키 등록

  • 1) github 계정의 Settings > SSH and GPG keys
  • 2) New SSH Key
    (Title은 원하는데로, Key 칸에는 복사한 .pub 공개키 내용을 그대로 붙여넣기)
  • 3) Add SSH Key (공개키 등록 완료)

4. ssh agent 실행을 통한 clone 준비

SSH 공개 키 생성 및 ssh agent에 ssh개인키 추가
https://docs.github.com/ko/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys

https://docs.github.com/ko/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent

# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
> Agent pid 59566

// agent에 키 등록
$ ssh-add <ssh private key path> 
ex: ~/.ssh/id_rsa 

// agent에 등록된 키 확인
$ ssh-add -l

// agent에 등록된 키 삭제
$ ssh-add-D <ssh private key path> 
ex : ~/.ssh/id_rsa

5. clone 진행

git clone <ssh git Repository>

🌧 발생 문제

  • git -agent를 통해서 nginx의 리소스 디렉터리인 /var/www에 clone을 하려고해도 권한이 없음.
  • sudo 명령어를 이용하여 root(시스템) 사용자로 clone을 진행함.
  • 그런데도, 처음 SSH키를 생성/등록 하지 않은 상태와 똑같이 안됐음.

1. ssh-agent 실행 및 key 등록완료

해당 상태에서 /var/www로 이동해 sudo git clone을 해도 Permission Denied(publicKey) 상태가 뜸.

2. sudo 명령어 사용시 새로운 ssh-agent 프로세스 발생

  • 2-1) 분명 git clone 전에 ssh-agent가 잘 실행됐는지 확인하기 위해서 ps명령어를 통해 확인했을때 분명이 ssh-agent가 하나였음.

  • 2-2) 하지만 해당 디렉터리에 권한이 없어 sudo git clone으로 명령어를 입력하고 오류가 나서 혹시나 하고 ps로 ssh-agent를 조회하니 root 사용자로 실행된 ssh-agent 프로세스가 하나 더 생성 되었음.

  • 2-3) 내가 ssh key를 등록한 ssh-agent는 PID 49776인 프로세스 이지만, sudo git clone 시 사용되었던 ssh-agent는 새로 생성된 PID 49791 프로세스였음.

  • 2-4) sudo git clone 시에는 root 사용자 권한으로 실행 되다보니 새로운 ssh-agent를 만들어서 github에 ssh접근을 하는 것 처럼 보임.

3. ⭐처음부터 root계정으로 git clone 진행⭐

  • 그래서 애초에 root 계정으로 ssh-agent를 실행하고 Key등록을 마친 후 clone을 진행. (이걸 못해서 삽질 엄청함)
  • 실행 되고 있는 모든 ssh-agent는 프로세스를 종료 시켰다.
$ sudo su
$ eval "$(ssh-agent -s)"
$ ssh-add /home/(user)/.ssh/id_rsa
$ git clone <ssh git Repository>

0개의 댓글