[TIL] - git push 실패 해결 여정

김주형·2022년 10월 28일
1

TIL

목록 보기
18/37

Reference

다음을 참고하여 작성되었습니다. 감사합니다. 🙇🏻‍♂️


1. 문제 발생 - 원격 저장소에 올리기 실패

git add -A(또는 .) // 변경된 전체 파일을 한번에 반영
git commit -m "메시지" // 작업한 내용을 메시지에 기록
git push origin 브랜치이름
ex) git push origin joohyeongKim

IDE에 git 연동 후 터미널에서 위와 같은 git 명령어 시도 후 다음과 같은 에러가 발생

error

git@github.com: Permission denied (publickey). 
Could not read from remote repository. 
Please make sure you have the correct access rights and the repository exists.

접근 과정

올바른 접근 권한과 저장소를 읽을 수 없었기 때문에

원격 저장소에서 읽을 수 없음을 문제로 정의하고

이유를 탐색하기 위해 열심히 구글링한 결과

SSH 키를 등록하여 간단히 해결 가능하다는 정보를 얻었다.


구글링에 SSH가 왜 나와

SSH(Secured SHell) : 원격 컴퓨터에 접속하기 위해 사용되는 프로토콜

시큐어 셸은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. - 시큐어셸

SSH 프로토콜은 어떻게 동작할까? 다음과 같이 같단히 요약해보았다.

  1. SSH 통신을 할때 클라이언트에서 생성된 공개키를 통신하고자하는 서버에 저장한다.
    • SSH 공개 Key : 통신할때 아이디, 비밀번호 대신 전송
  2. 이후 클라이언트가 서버에 통신을 시도할때 서버에 저장된 공개키가 클라이언트 로컬에 저장된 비공개키와 한쌍임을 확인한다.
    • SSH Key는 생성 시 한쌍으로 생성된 2개의 키를 보유
      • 1) 비공개키 (Private Key)
      • 2) 공개키 (Open Key)
  3. 2를 통해 안전한 통신채널이 확림됨을 보장받을 수 있다.

SSH Key 한쌍을 만들고, 공개키를 github 원격 저장소에 저장하면 푸시 가능하다고 가정하고 실행


예외

이미 키가 생성되어 있는 경우

cat ~/.ssh/id_rsa.pub
  • id_rsa.pub은 1번에서 언급한 서버에 저장되는 공개키를 의미

2. SSH 키 생성

터미널에 다음과 같은 명령어 입력

ssh-keygen -t rsa -C “본인 GitHub 계정 이메일”
  • 괜히 passphrase(비밀번호) 입력하면 통신할때마다 입력해야하므로 엔터만 눌러서 키를 생성을 추천!

다음과 같은 결과가 나왔다면 정상적으로 생성되었음을 알 수 있다.

result

  • SSH Key가 생성된 폴더로 접근 -> 확장자가 .pub인 파일 속에 숨어있는 SSH키를 복사하면 된다.
    - pub는 public key, 확장자가 없는 것은 private key

나는 간단하게 명령어로 파일을 실행시켰다.

cat ~/.ssh/id_rsa.pub
  • ssh-rsa ~~~~ =[이메일] 이런 형태로 키가 생성됨

3. SSH 키 등록

깃허브 설정 이동
settings -> SSH and GPG keys -> new SSH key 이동 후 key 항목에 2에서 얻은 복사된 key 값을 붙여넣어 등록해주면
원격 저장소에 SSH키가 저장 완료된다.

SSH 확인

code -> SSH -> 내용 복사

ssh ex

프로젝트와 연동위해 터미널에 다음 명령어 입력

git clone git@github.com:username/repositoryname.git

ssh copy

4. 재시도

git push origin branchname

solved

profile
왔을때보다좋은곳으로

0개의 댓글