작업을 마치고 VS Code 소스 제어 탭에서 커밋까지는 잘 됐는데, 동기화 버튼을 누르는 순간 “Authentication failed” 창이 뜨면서 막히는 경험. VS Code Git 인증 오류는 개발을 막 시작한 분들이 가장 자주 걸리는 관문입니다. 문제는 이게 한 가지 원인이 아니라는 점입니다. 비밀번호를 잘못 입력한 게 아니라 비밀번호 방식 자체가 폐지됐거나, 예전에 쓰던 다른 계정 정보가 컴퓨터에 남아 있어서 생기는 경우가 대부분입니다.
원인을 모르는 채로 재설치를 반복하다 반나절을 날리는 분들을 많이 봤습니다. 이 글에서는 오류 메시지별로 원인을 구분하는 법부터, 저장된 잘못된 인증 정보를 지우는 법, 그리고 애초에 이 오류가 다시 나지 않게 만드는 SSH 설정까지 순서대로 정리합니다.
먼저 오류 메시지부터 정확히 봅니다
VS Code가 띄우는 팝업에는 “Git: Authentication failed” 정도만 나옵니다. 진짜 단서는 출력 패널에 있습니다. VS Code 하단 패널에서 출력(Output) 탭을 열고, 오른쪽 드롭다운에서 Git을 선택하면 실제로 실행된 명령과 서버 응답이 그대로 보입니다.
가장 흔한 메시지는 이것입니다.
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories
fatal: Authentication failed for 'https://github.com/myname/myrepo.git/'

이 메시지가 보인다면 계정이나 비밀번호가 틀린 게 아닙니다. 깃허브는 2021년 8월 13일부터 Git 명령에서 계정 비밀번호 사용을 폐지했습니다. 지금은 개인용 액세스 토큰(PAT)이나 SSH 키를 써야 합니다. 오래된 강의나 블로그를 보고 따라 하다 여기서 막히는 경우가 정말 많습니다.
오류 메시지별 원인 구분표
출력 패널에서 확인한 메시지를 아래 표와 맞춰보면 어디를 손대야 할지 바로 좁혀집니다.
| 오류 메시지 | 원인 | 해결 방향 |
|---|---|---|
| Support for password authentication was removed | 비밀번호 방식으로 접속 시도 | 토큰(PAT) 발급 또는 SSH 전환 |
| Authentication failed (메시지 없이 반복) | 컴퓨터에 저장된 옛 계정 정보가 계속 전송됨 | 저장된 자격 증명 삭제 |
| remote: Permission to … denied to 다른계정 | 다른 깃허브 계정으로 로그인된 상태 | 자격 증명 삭제 후 재로그인 |
| could not read Username … No such device or address | 인증 창을 띄울 도우미가 없음 | credential.helper 설정 |
| Permission denied (publickey) | SSH 키가 없거나 등록되지 않음 | SSH 키 생성 후 깃허브에 등록 |
| SSL certificate problem | 회사 방화벽·백신의 통신 검사 | 사내 인증서 등록 (관리자 문의) |
먼저 지금 저장소가 어떤 방식으로 연결돼 있는지 확인하세요. VS Code 하단의 터미널 탭에서 그대로 실행하면 됩니다.
# 현재 저장소가 어떤 주소로 연결돼 있는지 확인
git remote -v
# 출력 예시
# origin https://github.com/myname/myrepo.git (fetch)
# origin https://github.com/myname/myrepo.git (push)
# 어떤 자격 증명 도우미를 쓰는지 확인
git config --get credential.helper
주소가 https://로 시작하면 토큰 방식, git@으로 시작하면 SSH 방식입니다. 이 구분에 따라 아래에서 볼 해결법이 달라집니다.
해결 1. 저장된 잘못된 인증 정보 지우기
가장 많은 사례가 이것입니다. 예전에 한 번 로그인해둔 정보가 운영체제 저장소에 남아서, 비밀번호를 새로 입력할 기회조차 없이 옛 정보가 자동으로 전송되고 실패하는 상황입니다. 계정을 바꿨거나, 회사 계정과 개인 계정을 같이 쓰는 경우 특히 자주 발생합니다.
윈도우에서는 제어판 > 사용자 계정 > 자격 증명 관리자 > Windows 자격 증명에서 git:https://github.com 항목을 찾아 제거하면 됩니다. 터미널이 편하다면 아래가 더 빠릅니다.
# 1) 저장된 깃 자격 증명 목록 확인
cmdkey /list | findstr git
# 2) 깃허브 항목 삭제 (목록에 나온 이름을 그대로 씁니다)
cmdkey /delete:git:https://github.com
# 3) 삭제됐는지 다시 확인
cmdkey /list | findstr git
맥과 리눅스는 저장 위치가 다릅니다.
# 맥: 키체인에 저장된 깃허브 자격 증명 삭제
git credential-osxkeychain erase
host=github.com
protocol=https
# 위 세 줄을 입력한 뒤 엔터를 한 번 더 눌러 빈 줄로 마칩니다.
# 리눅스에서 credential.helper store 를 쓰고 있었다면 파일을 지웁니다.
rm ~/.git-credentials
지운 뒤 VS Code에서 다시 동기화하면 로그인 창이 새로 뜹니다. 이때 비밀번호 칸에 계정 비밀번호를 넣으면 안 됩니다. 아래에서 만들 토큰을 넣어야 합니다.
해결 2. 개인용 액세스 토큰(PAT) 발급받기
HTTPS 방식을 계속 쓰겠다면 비밀번호 대신 쓸 토큰이 필요합니다. 깃허브 기준 발급 순서입니다.
- 깃허브 우측 상단 프로필 > Settings
- 왼쪽 메뉴 맨 아래 Developer settings
- Personal access tokens > Tokens (classic)
- Generate new token (classic) 클릭
- Note에 용도를 적고(예: 집 노트북 VS Code), 만료일을 정합니다
- 권한(Scopes)에서 repo에 체크합니다. 비공개 저장소에 접근하려면 필수입니다
- 맨 아래 Generate token을 누르고, 표시된 토큰 문자열을 즉시 복사합니다
토큰은 발급 화면을 벗어나는 순간 다시 볼 수 없습니다. 이 창을 닫기 전에 반드시 복사해두세요. 놓쳤다면 새로 발급받는 수밖에 없습니다.
이제 VS Code에서 push를 시도하면 뜨는 로그인 창에서, 사용자명은 깃허브 아이디를 넣고 비밀번호 칸에 방금 복사한 토큰을 붙여넣습니다. 한 번 성공하면 자격 증명 도우미가 저장해두기 때문에 매번 입력할 필요는 없습니다.
만약 로그인 창 자체가 안 뜨고 could not read Username 오류가 난다면, 자격 증명 도우미가 설정되지 않은 상태입니다. 윈도우에서 Git for Windows를 설치했다면 아래로 지정할 수 있습니다.
git config --global credential.helper manager
해결 3. SSH로 바꿔서 아예 안 물어보게 만들기
토큰 방식은 만료일이 되면 다시 발급받아야 합니다. 개인 장비에서 오래 쓸 거라면 SSH 키가 손이 덜 갑니다. 한 번 설정하면 만료 걱정이 없고, 인증 창이 뜨지 않습니다.
# 1) 키 생성 (이메일은 깃허브 계정 이메일)
ssh-keygen -t ed25519 -C "you@example.com"
# 저장 위치와 암호를 묻습니다. 그냥 엔터를 눌러도 됩니다.
# 2) 공개키 내용을 복사
# 윈도우 (PowerShell)
Get-Content ~/.ssh/id_ed25519.pub
# 맥 / 리눅스
cat ~/.ssh/id_ed25519.pub
# 3) 깃허브 > Settings > SSH and GPG keys > New SSH key 에 붙여넣기
# 4) 연결 확인
ssh -T git@github.com
# "Hi myname! You have successfully authenticated..." 가 나오면 성공
# 5) 저장소 주소를 SSH 방식으로 변경
git remote set-url origin git@github.com:myname/myrepo.git
git remote -v
마지막 git remote set-url까지 실행해야 기존 저장소가 SSH 주소로 바뀝니다. 이 단계를 빠뜨리고 키만 등록한 뒤 “왜 안 되냐”고 하는 경우가 흔합니다. 앞으로 새로 받는 저장소는 깃허브 Code 버튼에서 HTTPS 대신 SSH 탭의 주소를 복사하면 됩니다.
VS Code 계정 로그인이 꼬였을 때
VS Code에는 자체 깃허브 로그인 기능이 따로 있습니다. Git 자격 증명과는 별개로 관리되기 때문에, 이 둘이 서로 다른 계정을 가리키면 혼란스러운 오류가 납니다. 확장 프로그램이나 Pull Request 기능에서 권한 오류가 난다면 여기를 의심하세요.
- VS Code 왼쪽 사이드바 맨 아래 계정(사람 모양) 아이콘 클릭
- 로그인된 깃허브 계정 위에서 Sign out 선택
- VS Code를 완전히 종료했다가 다시 실행
- 소스 제어 탭에서 동기화를 눌러 로그인 창이 새로 뜨는지 확인
참고로 설정 동기화(Settings Sync)에 쓰는 계정과 저장소 접근에 쓰는 계정은 별개로 지정할 수 있습니다. 회사 계정으로 설정을 동기화하면서 개인 계정으로 커밋하는 구성도 가능합니다.
그래도 안 될 때: 실제로 오간 내용 보기
여기까지 했는데도 같은 오류가 반복된다면, Git이 실제로 어떤 주소에 어떤 자격 증명을 보내고 있는지 직접 보는 게 가장 빠릅니다.
# 윈도우 (PowerShell)
$env:GIT_TRACE = 1
$env:GIT_CURL_VERBOSE = 1
git push
# 맥 / 리눅스
GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push
# 확인이 끝나면 원래대로 돌려놓습니다.
# 윈도우: Remove-Item Env:GIT_TRACE, Env:GIT_CURL_VERBOSE
출력에서 확인할 것은 두 가지입니다. 첫째, credential-manager 같은 도우미가 실제로 호출되는지. 둘째, 접속 주소가 내가 의도한 저장소가 맞는지. 조직 저장소를 개인 계정으로 접근하려다 실패하는 경우가 여기서 드러납니다.
주의할 점
- 토큰을 코드나 저장소 주소에 직접 넣지 마세요.
https://토큰@github.com/...형태로 remote를 설정하면 당장은 되지만, 토큰이.git/config에 평문으로 남습니다. 실수로 공유되면 계정 접근 권한이 그대로 넘어갑니다. - 토큰 권한은 필요한 만큼만 줍니다.
repo만 있으면 되는 작업에 관리자 권한까지 체크할 이유가 없습니다. - 리눅스에서
credential.helper store는 자격 증명을 홈 디렉터리에 평문 파일로 저장합니다. 공용 서버라면 쓰지 마세요. - 회사 노트북에서
SSL certificate problem이 난다면 보안 검사 장비 때문입니다.http.sslVerify를 끄는 방법이 검색에 많이 나오지만, 이건 통신 검증 자체를 포기하는 설정입니다. 사내 인증서를 등록하는 게 맞고, IT 담당자에게 문의하세요. - 2단계 인증(2FA)을 켜둔 계정은 비밀번호 방식이 애초에 불가능합니다. 토큰이나 SSH 외에 다른 길이 없습니다.
마무리
정리하면 순서는 이렇습니다. 출력 패널에서 진짜 메시지를 확인하고, 저장된 옛 자격 증명을 지우고, 토큰이나 SSH로 다시 연결합니다. 대부분은 두 번째 단계에서 해결됩니다.
지금 당장 할 수 있는 가장 작은 첫걸음은 git remote -v 한 줄을 실행해보는 것입니다. 주소가 https://인지 git@인지만 알아도 어느 쪽 해결법을 봐야 할지 정해집니다.
다음 글에서는 파이썬으로 SMTP 이메일 자동 발송 스크립트를 만들어, 보고서나 알림을 정해진 시각에 자동으로 보내는 방법을 다루겠습니다.