Dev.to Security 🔐 Cybersecurity 👁 0

GitHub 2FA를 통째로 잃었다. 남은 건 서버에 두고 잊은 SSH 키였다

GitHub 2FA를 통째로 잃어버렸다. 8월부터 웹 로그인이 안 됐다. 터미널은 gh로 push가 계속 되니까 미뤄 두다가, 이번에 별짓을 다 해 봤다. 결론은 서버였다. 5월에 사이드 프로젝트 서버 세팅하면서 계정에 등록해 둔 SSH 키. 내가 올려 놓고 까먹었다. 안 됐던 것들 2FA 앱: 폰을 7월에 초기화해서 팔았다 복구 코드: 3월에 열어 본 기록은 있는데

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 [email protected] 으로
   "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 [email protected]

확인해 볼 것

  • 복구 코드 어디 있는지 아나?
  • 패스키가 기기 한 대에만 있진 않나?
  • 서버에 계정용 SSH 키 올려 둔 적 있나?
📰 Read the original article on Dev.to Security

Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.