반응형
개발자라면 누구나 한 번쯤 겪어봤을 상황입니다. 회사 계정과 개인 계정을 번갈아 사용하다가 갑자기 Git push가 막히는 경우 말이죠.
특히 맥북에서는 키체인에 이전 계정 정보가 저장되어 있어 더욱 골치 아픈 문제가 됩니다.
오늘은 이런 문제를 기존 설정은 그대로 두고 SSH Config만으로 깔끔하게 해결하는 방법을 공유하겠습니다.
🚨 문제 상황
전형적인 에러 메시지들
fatal: unable to access 'https://github.com/{id}/new_feature_android.git/': The requested URL returned error: 403 remote: Permission to {id}/new_feature_android.git denied to mmol93. fatal: unable to access
'https://github.com/{id}/new_feature_android.git/': The requested URL returned error: 403
왜 이런 일이 발생할까?
- 맥 키체인에 이전 계정 정보 저장: mmol93 계정이 자동으로 사용됨
- GitHub의 권한 시스템: 저장소 접근 권한이 없는 계정으로 인증 시도
- 자격 증명 충돌: 여러 GitHub 계정 사용 시 올바른 계정 선택 실패
SSH Config를 활용한 해결책
SSH Config 방식은 기존 키체인은 그대로 두고 각 저장소별로 다른 SSH 키를 사용할 수 있는 해결책입니다.
SSH 인증의 장점
- 토큰 관리 불필요: 한 번 설정하면 영구 사용
- 더 강한 보안: 공개키 암호화 기반
- 자동 인증: SSH Agent가 자동으로 키 관리
- 계정 분리: 저장소별로 자동으로 올바른 계정 선택
🛠️ 단계별 구현 가이드
Step 1: SSH 키 생성
# 새로운 SSH 키 생성
ssh-keygen -t ed25519 -C "your-email@example.com" -f ~/.ssh/"키 이름"
예:
ssh-keygen -t ed25519 -C "your-email@example.com" -f ~/.ssh/id_ed25519_personal
파라미터 설명:
- -t ed25519: 최신 보안 표준 암호화 방식
- -C "이메일": 새로운 GitHub 계정 이메일
- -f ~/.ssh/id_ed25519_personal: 의미있는 파일명 지정
프롬프트 응답:
# 시스템이 묻는 질문들 (순서대로 나타남)
Enter file in which to save the key: → 엔터 (기본값 사용)
Enter passphrase: → 비밀번호 입력 또는 엔터 (비워두기)
Enter same passphrase again: → 위와 동일하게 입력
# 완료 메시지
Your identification has been saved in /Users/mac/.ssh/id_ed25519_personal
Your public key has been saved in /Users/mac/.ssh/id_ed25519_personal.pub
Step 2: GitHub에 공개키 등록
# 생성된 공개키 출력
cat ~/.ssh/id_ed25519_personal.pub
GitHub 등록 과정:
- GitHub → Settings → SSH and GPG keys
- New SSH key 버튼 클릭
- Title: MacBook Personal Key
- Key: 출력된 공개키 전체 내용 붙여넣기
Step 3: SSH Config 설정
# SSH Config 파일 생성/편집
nano ~/.ssh/config
설정 내용:
# ~/.ssh/config 파일 내용
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
UseKeychain yes
AddKeysToAgent yes
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
IdentitiesOnly yes
UseKeychain yes
AddKeysToAgent yes
핵심 옵션 설명:
- IdentitiesOnly yes: 다른 키 간섭 방지 (필수!)
- UseKeychain yes: 맥 키체인 연동
- AddKeysToAgent yes: SSH Agent 자동 추가
주의 사항:
- SSH Config 파일을 편집할 때 반드시 들여쓰기를 해야합니다.
Step 4: SSH Agent에 키 추가
# SSH Agent에 키 추가
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_personal
Step 5: 연결 테스트
# SSH 연결 테스트
ssh -T git@github-personal
성공 시 출력:
Hi [GitHub사용자명]! You've successfully authenticated, but GitHub does not provide shell access.
Step 6: Git Remote URL 변경
# 현재 설정 확인
git remote -v
# SSH Config 방식으로 변경
git remote set-url origin git@github-personal:{git_name}/{repository}
URL 변화:
- Before: git@github.com:{git_name}/{repository}
- After: git@github-personal:{git_name}/{repository}
Step 7: 최종 테스트
git add . git commit -m "SSH Config 설정 테스트" git push origin main
이 때 정상적으로 push된다면 문제 없이 셋업된거로 볼 수 있습니다.
결론
SSH Config 방식은 초기 설정이 다소 복잡하지만, 한 번 구성하면 영구적으로 사용할 수 있는 완벽한 해결책입니다.
핵심 장점
- 기존 환경 보존: 다른 계정 설정에 영향 없음
- 자동 계정 분리: 저장소별로 자동으로 올바른 계정 사용
- 보안성 향상: 공개키 암호화 기반
- 편의성 극대화: 한 번 설정 후 자동 관리
반응형
'IT 지식' 카테고리의 다른 글
맥북 업데이트 이후 와이파이 연결 안됨 100% 해결 방법 (0) | 2025.05.06 |
---|---|
Docker란 무엇인지? - 초보자 도커 소개 & 간단한 사용 방법 (0) | 2025.02.11 |
도커(Docker)를 Windows에서 기본 위치가 아닌 다른 위치에 설치하기 (0) | 2025.02.09 |
Google Cloud Storage 사용하기 - 셋업 및 테스트 (0) | 2025.01.30 |
Cloud Scheduler로 주기적으로 Google Cloud Functions 호출하기 (1) | 2025.01.24 |
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글