Git

[git] GitHub push할 때 "not authorized" 에러 해결하기

박차 2026. 8. 29. 02:38

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 주소를 그대로 쓰고 싶다면 이 방법이 가장 빠릅니다.

  1. GitHub 로그인 후 우측 상단 프로필 → Settings
  2. 맨 아래 Developer settingsPersonal access tokensTokens (classic)
  3. Generate new token 클릭 → 권한(scope)에서 repo 체크 → 만료 기간 설정 후 생성
  4. 생성된 토큰 문자열을 복사 (창을 닫으면 다시 볼 수 없으니 꼭 복사)
  5. 다시 git push 실행 → 인증창이 뜨면 Username에는 GitHub 아이디, Password 칸에는 방금 만든 토큰을 붙여넣기

만약 예전 자격 증명이 캐시에 남아 인증창 자체가 안 뜬다면, Windows 기준으로 "자격 증명 관리자"(Credential Manager) 실행 → Windows 자격 증명 → git:https://github.com 항목을 삭제한 뒤 다시 push하면 인증창이 새로 뜹니다.

해결 방법 2: SSH 키로 전환

여러 저장소를 자주 오가거나 매번 토큰 입력이 번거롭다면 SSH 방식이 더 편합니다.

 
bash
# 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 → SettingsSSH and GPG keysNew SSH key에서 복사한 공개키를 붙여넣고 등록합니다.

등록 후 연결을 확인합니다.

 
bash
ssh -T git@github.com

Hi 사용자명! You've successfully authenticated... 메시지가 뜨면 성공입니다. 이제 다시 push하면 정상적으로 올라갑니다.

 
bash
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