AWS EC2 인스턴스에 SSH 연결로 프로젝트를 배포하려는데 권한이 없을때 발생한 문제이다.
우선 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
키 생성후 유저의 디렉터리 안에 .ssh 디렉터리 안에 저장됨
.pub 확장자로 된 공개키 내용을 복사하여 git에 등록하면된다.
SSH 공개 키 생성 및 ssh agent에 ssh개인키 추가
https://docs.github.com/ko/authentication/connecting-to-github-with-ssh/checking-for-existing-ssh-keys# 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
git clone <ssh git Repository>
- git -agent를 통해서 nginx의 리소스 디렉터리인 /var/www에 clone을 하려고해도 권한이 없음.
- sudo 명령어를 이용하여 root(시스템) 사용자로 clone을 진행함.
- 그런데도, 처음 SSH키를 생성/등록 하지 않은 상태와 똑같이 안됐음.
해당 상태에서 /var/www로 이동해 sudo git clone을 해도 Permission Denied(publicKey) 상태가 뜸.
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접근을 하는 것 처럼 보임.
- 그래서 애초에 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>