티스토리 뷰

+ 2022 08 10 추가

프로젝트를 진행하면서 sourcetree관련 인증오류의 8할은 결국 github의 내 accessToken 기한이 만기된 이유가 가장 컸어요!

혹시 내 토큰이 기한이 만기된 것은 아닌 지 우선적으로 확인해봅시다.

 

 

 

Github에서는 2021년 8월 13일부로 password authentication을 공식적으로 제거하고 personal access token만을 사용하도록 정책을 변경했습니다. 우리가 이전에 repo에 접근할 때 아이디 패스워드를 이용하던 것이 아이디 토큰 방식으로 변경된 것이라고 생각하면 됩니다. 

 

하지만 sourcetree에서는 인증에 실패하였을 때도 새로 비밀번호를 입력하게끔 해주지 않는다고 합니다. 소스트리를 삭제하고 새로 깔았을 시에도 계속해서 비밀번호를 입력하라는 창은 뜨지않고 인증 실패 에러 메세지만 나온다 하네요.

 

상황설명

이전에 source트리를 설치해놨었고 다른 도구(github desktop)을 쓰다가 넘어왔기 때문에 기존에 있던 인증정보를 지웠습니다. (도구 -> 옵션 -> 인증) 으로 들어가면 내 인증정보가 나타나는데 화면에 있는 모든 인증정보를 지우려하니 Github - Https 저장된 비밀번호는 계속해서 지워지지 않길래 남긴 뒤 진행했습니다.( 아무래도 이 부분이 문제가 되지 않았나 싶어요.) 

우선 계정 정보는 삭제할 수 있었기 때문에 해당정보를 삭제했고 추가를 통해서 새로 로그인했습니다. 

우측 상단에 추가 버튼을 누르면 '호스팅 계정 편집' 화면이 뜨는데 아래와 같이 입력해주면 됩니다.

  • 호스팅 서비스 : Github
  • 선호 프로토콜 : HTTPS
  • 인증은 : Basic
  • 사용자명 : 내 github 닉네임

그 뒤, 비밀번호 새로고침 버튼을 눌러준 뒤, sourcetree에 사용하려고 발급한 새 토큰값을 입력해줍니다. 

github에 새로운 원격 repo를 만들고 로컬의 repo 내용을 push하려고 하니 인증 에러 메세지가 뜨더군요!

 

간략하게 정리 

  1. sourcetree에 있던 기존 인증 정보 삭제 후 발급받은 토큰을 입력하여 새로 계정을 재추가했음
  2. 토큰으로 새롭게 인증을 했으니 문제가 없을 거라 생각했는데 원격 repo로 push시 아래와 같은 에러 메세지 발생

에러 메세지 예제▼

Command: git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks ls-remote https://깃허브주소
Output: 
Error: remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for '깃허브 주소'

 

해결 방안

  1. 토큰 발급 (토큰을 아예 사용해보지 않으셨다면 github에서 새 토큰을 만드셔야 합니다.)
  2. sourcetree에 저장된 비밀번호 제거

아래의 경로에 있는 파일을 찾아 삭제해준다. passwd 파일이 소스트리가 비밀번호를 저장해두는 파일이라고 합니다.

C:\Users\[계정이름]\AppData\Local\Atlassian\SourceTree\passwd
해당 파일을 삭제하기 전에 혹시 몰라 passwd 의 수정한 날짜를 확인해봤습니다. 분명 초반에 새로 발급받은 토큰값으로 계정을 추가했었는데 수정한 날짜가 21년으로 뜨더군요. 반영이 안됐구나 싶어서 바로 삭제해줬습니다.

그 다음 내가 하려고 했던 작업을 시도합니다. 저같은 경우는 다시 push 시도

그러면 비밀번호를 입력하라는 화면이 나옵니다. 이때 github에서 발급받은 token값을 입력해줍니다.

Login버튼을 누르면 정상적으로 push가 완료됐습니다.

 

 

 

 

all ref: https://shanepark.tistory.com/214

 

Sourcetree 에서 잘못된 비밀번호로 저장소 접근 안될때 해결방법

원인 소스트리에서는 한번 입력된 비밀번호가 잘못 되어도 절대 다시 입력하라고 하지 않고, 계속해서 비밀번호가 틀렸다는 메시지만 주구 장창 띄웁니다. 심지어 8월 13일 부로 Github에서는 passw

shanepark.tistory.com

 

+아래도 해당했기 때문에 추가 정리합니다.

  • 이전에 깃허브의 비밀번호를 재설정했습니다. 이 뒤에 로컬 git에 저장된 인증정보를 수정하지 않음

오류 메세지

Git clone/push: fatal : authentication error
                                    or
Logon failed, use ctrl+c to cancel basic credential prompt.

주요 원인 

계정 정보의 불일치로 인해 인증이 실패한 상황에서 발생하는 에러다. 

git은 ID/PW를 입력해 계정 인증을 시도하면 계정 정보를 git config에 저장해 다음 인증 때 사용한다.

즉 git config에 저장된 id/pw가 맞지 않아서 발생하는 error이다.

 

주요 발생 원인

  • 온라인 상의 girhub에서 비밀번호를 수정한 후 로컬 git에 저장된 인증 정보를 수정하지 않은 경우
  • 처음 로컬 git에 인증정보 저장 시 ID/PW를 잘못 기입했을 경우 
  • 다른 저장소에서 자용하려는 config된 계정 정보가 현재 저장소에서 사용될 경우(git config space혼동)

해결방안

잘못 저장된 정보를 삭제하고 새로운(올바른) 계정 정보를 입력하면 해당 에러를 제거할 수 있다. 

이 때 Git의 config에서 계정 인증 정보는 local, global, system의 범위로 저장할 수 있다.

  • local: 특정 저장소
  • global: 시스템의 특정 사용자
  • system: 시스템의 모든 사용자와 모든 저장소 

git credential 정보를 리셋하는 코드 

❗주의) git bash를 실행할 때 관리자 권한으로 실행을 해주셔야 오류 메세지가 나지않습니다. 
// 1.local에서 unset
git config --local --unset credential.helper  

// 2.global에서 unset
git config --global --unset credential.helper 

// 3.system에서 unset 
git config --system --unset credential.helper

보통은 global 범위인 2번에서 리셋을 진행하면 해결된다. 현재 저장소의 정보를 단순히 잘못 입력했다면 1번으로 충분하고, global에 config를 저장할 때 잘못 기입했거나 github에서 수정됐다면 2번을 사용해야 한다.   

3번의 system unset을 하게 되면 무조건 문제가 해결되겠지만, 당연하게도 모든 사용자/저장소의 캐시도 삭제되기 때문에 이후 과거 인증 절차를 지난 모든 프로젝트에서 다시 번거롭게 인증을 진행해야 한다.

따라서 적용 범위를 잘 골라서 캐시를 리셋하는 것이 좋다.  

 

출처: https://oizys.tistory.com/64 [우당탕탕 개발]

 

Git 계정정보 초기화(git config clear), credential error 원인 및 해결방법

오류 Git clone/push: fatal : authentication error or Logon failed, use ctrl+c to cancel basic credential prompt. 원인 계정 정보의 불일치로 인해 인증이 실패한 상황에서 발생하는 에러다. g..

oizys.tistory.com

여담)

 

 local, global 코드를 나중에 발견해서 3번 옵션인 system으로 전부 캐시를 삭제해버려서 아래와 같이 다시 Git 환경설정을 해주었습니다. (sourcetree를 사용하고 있으니 굳이 필요하지 않은 작업일지도..)

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

로컬에서 기본값으로 사용할Git 사용자 이름과 이메일 설정(global 옵션)
현재 시스템의 모든 Git 작업에 사용할 사용자 이름(user.name)과 이메일을 설정하고자 한다면, global옵션을 사용해 git config 명령어를 실행해줍니다.

  • 'John Doe' -> 내 깃허브 사용자닉네임 
  • johndoe@example.com -> 깃허브 이메일주소

 

 

 

댓글