[깃허브(Github)] 19. push 에러 2 - 회복맨 블로그

[깃허브(Github)] 19. push 에러 2

Github 사용법 2016.09.05 14:28

이전 push  에러는 그냥 단순히 SSH 로 되어있는걸 HTTPS 로 바꿔줘서 해결했었습니다.

http://recoveryman.tistory.com/282


그런데 비슷한 상황인데 HTTPS 로 해서 에러가 뜰 경우가 있습니다.

그리고 SSH 로 바꿔도 에러가 발생합니다. 하지만 이때 HTTPS 에러와 SSH 에러의 형태가 다릅니다.


http://recoveryman.tistory.com/282

에서 나왔던 에러는 다음과 같습니다.

Permission denied (publickey).

fatal: Could not read from remote repository.


Please make sure you have the correct access rights

and the repository exists.


원인은 사용권한 거부였고 해결방법은 SSH 로 되어있는 주소를 push 할때 발생해서 HTTPS 로 변경하였습니다.



이번 에러는 이 둘과는 달랐습니다.








1. 먼저 A라는 아이디를 통해서 깃허브 저장소를 만들었습니다. (git의 사용자 설정은 B로 되어 있습니다.)

사용자 이름을 붉은색 선으로 표시해 뒀어요 'nmhjnm' 이 보이시죠?

그리고 remote 시킬 주소는 HTTPS 에 표시되어 있는게 확인 되실 꺼예요.

이로써 A라는 이용자가 맞습니다.









2. 붉은색 선을 잘 보세요.

위에선 사용자 이름이 nmhjnm 이였던걸 확인하실 수 있어요. username 값이 다릅니다. 이건 B 사용자로 git을 설정한 것입니다.

그렇게 해놓고 add -> commit -> remote -> push 순으로 진행해봤습니다.

그랬더니 다음과 같은 에러를 뱉어냅니다.

remote: Permission to nmhjnm/pushTest2.git denied to gitest01.

fatal: unable to access 'https://github.com/nmhjnm/pushTest2.git/': The requested URL returned error: 403

인터넷 찾아보니까. 이 에러의 해결 방법은

사용자가 B 로 설정되어 있으니까 A 사용자로 바꿔라 라는게 있었습니다.

https://teamtreehouse.com/community/error-403-in-response-to-git-push-u-origin-master

이 링크를 보시고 구글 번역기를 돌리면 대강 감이 잡힙니다.

근데 저는 잘 안됬던 거로 기억해요...

A 라는 사용자로 A라는 사용자 상태에서 push 하는게 맞는데 B 라는 사용자로 어거지로 push 하려는.... 이상한 움직임을 눈치 채셨을 겁니다.

그러면 안되는거 같아요. 차라리 저장소 사용권한을 공유받는게 맞는것 같습니다.









3. 아무튼... 어떻게든 어거지로 어떻게든 해보고자... SSH를 클릭해서 스샷과 같은 주소를 사용해 보기로 했습니다.

SSH 란 

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

주고받는 패킷(데이터)를 암호화 해서 전송한다고 합니다.









4. 어찌됐건... 일단 기존에 HTTPS가 remote 경로로 지정되어 있으니깐 rm 명령으로 삭제를 진행하고

SSH로 다시 remote 경로를 잡고 push 해봤습니다. 그랬더니 다음과 같은 에러를 뱉어냅니다..

Warning: Permanently added the RSA host key for IP address '192.xx.xxx.112' to the list of known hosts.

ERROR: Permission to nmhjnm/pushTest2.git denied to recoveryman.

fatal: Could not read from remote repository.


Please make sure you have the correct access rights

and the repository exists.

이 에러는
처음 자신의 GitHub 환경을 구성한 컴퓨터가 아닐 시 처음 작업 디렉토리를 잡아 준 후 git clone 또는 push 명령을 실행하면 나오는 에러라고 합니다.
에러 정말 똑같죠? 그럼 적혀져 있는대로 해결해 보도록 합시다.










5. 먼저 SSH 공개키를 만들어야 합니다.

SSH 공개키를 만드는 방법은

https://git-scm.com/book/ko/v1/Git-%EC%84%9C%EB%B2%84-SSH-%EA%B3%B5%EA%B0%9C%ED%82%A4-%EB%A7%8C%EB%93%A4%EA%B8%B0

에 자세히 나와 있습니다. 이걸 따라해 보려 합니다.

ssh-keyzen

를 입력하면 이런 문구가 출력됩니다.

Generating public/private rsa key pair.

Enter file in which to save the key (/c/Users/사용자명/.ssh/id_rsa):

이건 어디에 저장할래 묻는거라 그냥 그 위치에 저장하려면 엔터키를 눌러주시면 됩니다.






만약 해당경로에 rsa 키가 존재한면 다음과 같이 물어봅니다.

이때 그냥 엔터치면 작업이 취소 되니 꼭 y 를 입력해 주시기 바랍니다.





저는 엔터만 쭉쭉 쳤습니다. 그럼 이렇게 키값이 나오는데 보안상 가렸습니다.






그런다음 cat ~/.ssh/id_rsa.pub

를 입력후 엔터를 누르면 SSH 공개키가 생성이 됩니다.

저 부분을 마우스 로 드래그 -> 오른쪽 클릭 -> copy 합니다.






그후 A아이디로 만든 깃허브의 저장소를 보시면 좌측 상단에 자신의 아이콘 을 클릭해서 Settings 를 눌러줍니다.






그리고 우측 메뉴중 SSH and GPG keys 를 누르고 좌측에 화면 바뀌면 New SSH key를 누릅니다.







그러면 이렇게 화면이 바뀌는데 스샷과 같이 타이틀, SSH공개키를 입력후 Add SSH key 를 눌러줍니다. (스샷에서 가린것 보다 훨씬 깁니다.)






그 후 화면이 이렇게 바뀌였습니다.






그리고 원격 저장소로 push 해 보겠습니다.

아주 잘 되는걸 확인할 수 있습니다.


댓글 5

  • 1234 (2017.06.01 10:45)

    https 만으로 해결 방법은 못찾으셨나요

    • 회복맨 (2017.06.01 14:14 신고)

      http://recoveryman.tistory.com/282

      예전에 이런식으로 해결했던적은 있습니다만 이게 1234님이 원하는 방법이 아닐 수 있습니다.

      에러 코드가 뜨거나 어떤식으로 진행하셨는지 진행 과정을 알려주시면 저도 최대한 찾아가면서 도움을 드릴 수 있겠으나...

      흠...
      질문 내용 자체가 참 많은걸 생각하게 만드네요.

      어쨌든 방문해 주셔서 감사합니다.

  • shan (2017.10.11 11:04)

    저도 같은 문제로 고민중이었는데 SSH key 추가해서 해결했습니다. 회복맨님의 글과 일맥상통하는 글이네요.
    https://www.digitalocean.com/community/questions/github-https-push-403-error
    http://jessemon.blogspot.kr/2013/08/github-push-to-upstream-403-error-with.html

    • 회복맨 (2017.10.12 13:57 신고)

      방문해 주셔서 감사합니다 ^^
      처음 git을 접할때 이런 부분이 정말 어렵게만 다가왔었던 적이 있었어요 ㅋㅋ;

  • doky (2018.11.02 00:57)

    감사합니다!! 덕분에 ssh로 해결했어요.