GitHub push할 때 "not authorized" 에러 해결하기
로컬에서 커밋까지 잘 끝내고 git push를 했는데 아래처럼 인증 에러가 나서 당황한 적이 있으실 겁니다.
Can't connect to any repository: https://github.com/사용자명/저장소.git (not authorized)
분명 예전에는 잘 되던 push인데 갑자기 인증이 안 되는 경우, 대부분은 GitHub가 더 이상 계정 비밀번호로는 git 작업을 허용하지 않기 때문입니다.
원인
GitHub는 2021년 8월부터 HTTPS 방식의 git 작업(clone, push, pull 등)에 계정 비밀번호 사용을 완전히 막았습니다. 대신 아래 둘 중 하나로 인증해야 합니다.
- Personal Access Token(PAT) — HTTPS 방식을 유지하면서 비밀번호 대신 사용하는 토큰
- SSH 키 — 아예 다른 인증 방식으로 전환
예전에 저장해둔 자격 증명이 있다면 그게 만료됐거나, 애초에 비밀번호를 그대로 입력하고 있었다면 이 에러가 발생합니다. (계정이 다르거나 저장소에 대한 쓰기 권한이 없는 경우에도 같은 메시지가 뜰 수 있으니, 지금 로그인된 GitHub 계정이 맞는지도 한 번은 확인해보시는 게 좋습니다.)
해결 방법 1: Personal Access Token(PAT) 발급
HTTPS 주소를 그대로 쓰고 싶다면 이 방법이 가장 빠릅니다.
- GitHub 로그인 후 우측 상단 프로필 → Settings
- 맨 아래 Developer settings → Personal access tokens → Tokens (classic)
- Generate new token 클릭 → 권한(scope)에서 repo 체크 → 만료 기간 설정 후 생성
- 생성된 토큰 문자열을 복사 (창을 닫으면 다시 볼 수 없으니 꼭 복사)
- 다시 git push 실행 → 인증창이 뜨면 Username에는 GitHub 아이디, Password 칸에는 방금 만든 토큰을 붙여넣기
만약 예전 자격 증명이 캐시에 남아 인증창 자체가 안 뜬다면, Windows 기준으로 "자격 증명 관리자"(Credential Manager) 실행 → Windows 자격 증명 → git:https://github.com 항목을 삭제한 뒤 다시 push하면 인증창이 새로 뜹니다.
해결 방법 2: SSH 키로 전환
여러 저장소를 자주 오가거나 매번 토큰 입력이 번거롭다면 SSH 방식이 더 편합니다.
# 1. remote 주소를 SSH로 변경
git remote set-url origin git@github.com:사용자명/저장소.git
# 2. SSH 키가 있는지 확인
dir %userprofile%\.ssh
# 3. 없다면 새로 생성
ssh-keygen -t ed25519 -C "이메일@example.com"
# 4. 공개키를 클립보드로 복사
clip < %userprofile%\.ssh\id_ed25519.pub
이후 GitHub → Settings → SSH and GPG keys → New SSH key에서 복사한 공개키를 붙여넣고 등록합니다.
등록 후 연결을 확인합니다.
ssh -T git@github.com
Hi 사용자명! You've successfully authenticated... 메시지가 뜨면 성공입니다. 이제 다시 push하면 정상적으로 올라갑니다.
git push -u origin master
정리
- "not authorized" 에러의 가장 흔한 원인은 GitHub가 비밀번호 인증을 막아서다
- HTTPS를 유지하려면 Personal Access Token, 아예 편하게 쓰려면 SSH 키 등록
- 캐시된 옛날 자격 증명이 말썽이라면 Windows 자격 증명 관리자에서 삭제 후 재시도
'Git' 카테고리의 다른 글
| [자바] 윈도우 git 설치(vim) (0) | 2022.07.28 |
|---|---|
| [Github] 접근제어자 변경 ( public -> private ) (0) | 2021.08.04 |
| [GitLab] Default branch 변경 (0) | 2021.08.04 |