GitHub 2FA를 통째로 잃어버렸다. 8월부터 웹 로그인이 안 됐다. 터미널은 gh로 push가 계속 되니까 미뤄 두다가, 이번에 별짓을 다 해 봤다.
결론은 서버였다. 5월에 사이드 프로젝트 서버 세팅하면서 계정에 등록해 둔 SSH 키. 내가 올려 놓고 까먹었다.
안 됐던 것들
- 2FA 앱: 폰을 7월에 초기화해서 팔았다
- 복구 코드: 3월에 열어 본 기록은 있는데 어디 저장했는지 못 찾았다
- 패스키: 윈도우 노트북 Edge에 있었다. 노트북은 버렸다
-
gh토큰: 복구 문서엔 직접 만든 PAT만 나온다.gh로그인 토큰은 없다 - 예전 PAT: 만료됐거나 어디 뒀는지 모른다
- 8월 복구 요청: 넣었는데 안 풀렸다
계정을 버릴까도 했다
새 계정으로 저장소를 옮기면 GitHub Pages 주소가 바뀐다. 공모전에 낸 링크가 깨진다. 잔디(기여 그래프)도 이메일을 따라가는데 그 이메일이 잠긴 계정에 묶여 있다.
잠긴 계정에서 이메일 연결만 끊는 방법은 있다. 끊은 이메일을 새 계정에 붙이면 커밋 기록은 유지된다. 대신 되돌릴 수 없다. 이건 마지막으로 미뤘다.
일단 저장소 22개는 git clone --mirror로 다 받아 놨다.
서버에 있었다
GitHub 복구 요청은 메일 인증 말고 하나를 더 요구한다. 예전에 로그인한 기기, 예전에 등록한 SSH 키, 예전에 만든 PAT 중 하나. 계정에 등록된 키는 1개인데 맥에 있는 키랑은 안 맞았다.
GitHub 알림 메일을 뒤지니 5월 서버 세팅하던 날 "계정에 새 SSH 키가 등록됐다"는 메일이 있었다. 서버가 비공개 저장소를 pull하게 하려고 서버에서 만든 키를 계정에 바로 넣었던 거다. 6월에 저장소 전용 키로 바꾸면서 이건 안 지웠다.
왜 올렸을까 이걸. 그 덕에 살았지만.
이 키로 복구 요청 SSH 인증까지 통과했다. 지금은 GitHub 검토 기다리는 중.
나도 찾아보려면
제일 쉬운 건 AI 에이전트한테 시키는 거다. 나도 Claude Code한테 시켜서 찾았다. 이렇게 넣으면 된다.
GitHub 계정(<계정>) 2FA를 잃어서 웹 로그인이 안 된다. 복구 요청에 쓸 "예전에 계정에 등록한 SSH 키"를 찾아줘. 1. https://github.com/<계정>.keys 로 계정에 등록된 키 지문 확인 2. 이 컴퓨터와 내가 접속할 수 있는 서버의 ~/.ssh 키 지문과 비교 3. 못 찾으면 메일에서 GitHub "SSH key was added" 알림을 찾아 언제 어디서 등록했는지 추적 4. 찾으면 ssh -i <키> -o IdentitiesOnly=yes -T git@github.com 으로 "Hi <계정>!"이 나오는지 확인 개인키·토큰 값은 출력하지 말고 위치와 지문만 알려줘. 서버에 접속하기 전에는 먼저 물어봐. 직접 하려면 아래 순서다.
계정에 등록된 키 지문:
curl -s https://github.com/<계정>.keys | ssh-keygen -lf - 갖고 있는 기기(서버 포함)에서 지문 맞는 키 찾기:
for k in ~/.ssh/*; do fp=$(ssh-keygen -y -P "" -f "$k" 2>/dev/null | ssh-keygen -lf - 2>/dev/null | awk '{print $2}') [ -n "$fp" ] && echo "$fp $k" done | grep -F "$(curl -s https://github.com/<계정>.keys | ssh-keygen -lf - | awk '{print $2}')" 찾았으면 확인. Hi <계정>!이면 쓸 수 있다. Hi <계정>/<저장소>!면 저장소 전용 키라 못 쓴다.
ssh -i <키 경로> -o IdentitiesOnly=yes -T git@github.com 확인해 볼 것
- 복구 코드 어디 있는지 아나?
- 패스키가 기기 한 대에만 있진 않나?
- 서버에 계정용 SSH 키 올려 둔 적 있나?