깃헙 계정 여러개 관리
깃헙 계정 여러 개 관리하는 방법: SSH 키부터 자동화까지
깃헙 계정 여러 개 관리하는 방법: SSH 키부터 자동화까지 완벽 가이드
개인 프로젝트와 회사 업무를 같은 깃헙 계정으로 관리하다가 커밋 이력이 뒤섞인 경험, 한 번쯤 있으신가요? 혹은 프리랜서로 여러 클라이언트를 동시에 관리해야 하는 상황이라면 더욱 복잡해집니다. 이 글에서는 깃헙 계정 여러 개를 충돌 없이 깔끔하게 관리하는 방법을 단계별로 알려드립니다.
왜 깃헙 계정을 여러 개 사용할까?
많은 개발자들이 하나의 깃헙 계정만으로 모든 작업을 처리하려고 합니다. 하지만 다음과 같은 상황에서는 계정 분리가 선택이 아닌 필수가 됩니다.
- 개인 프로젝트 vs 회사 업무: 회사 정책상 업무 코드를 개인 계정에 올릴 수 없는 경우
- 프리랜서 다중 클라이언트 관리: 클라이언트별로 별도 계정을 요구하는 경우
- 오픈소스 기여 활동: 개인 닉네임으로 커뮤니티 활동을 분리하고 싶은 경우
- 테스트 및 봇 계정: 자동화 스크립트나 CI/CD 파이프라인용 전용 계정이 필요한 경우
문제는 로컬 환경에서 여러 계정을 동시에 운용하려고 하면 인증 충돌이 발생한다는 점입니다. SSH 키와 Git 설정을 올바르게 구성하지 않으면 엉뚱한 계정으로 푸시가 되거나, 아예 인증 자체가 실패하는 상황이 생깁니다. 지금부터 이 문제를 근본적으로 해결하는 방법을 살펴보겠습니다.
1단계: 계정별 SSH 키 생성하기
깃헙 다중 계정 관리의 핵심은 각 계정에 전용 SSH 키를 할당하는 것입니다. SSH 키 기반 인증을 사용하면 비밀번호 입력 없이도 계정을 명확하게 구분할 수 있습니다.
SSH 키 생성 명령어
터미널을 열고 아래 명령어를 순서대로 실행합니다.
# 개인 계정용 SSH 키 생성
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_personal
# 회사 계정용 SSH 키 생성
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_work
-f 옵션으로 키 파일 이름을 명확하게 구분하는 것이 중요합니다. 기본 파일명(id_ed25519)을 그대로 사용하면 나중에 덮어쓰기가 발생할 수 있습니다. 생성이 완료되면 ~/.ssh/ 디렉토리에 .pub 확장자의 공개 키 파일이 생성됩니다.
깃헙에 공개 키 등록
각 공개 키를 해당 깃헙 계정의 Settings → SSH and GPG keys → New SSH key 메뉴에서 등록합니다.
# 공개 키 내용 복사 (macOS 기준)
pbcopy < ~/.ssh/id_ed25519_personal.pub
pbcopy < ~/.ssh/id_ed25519_work.pub
2단계: SSH Config 파일로 호스트 분리하기
SSH 키를 만들었다면 이제 어떤 키를 어떤 계정에 사용할지 시스템에 알려줘야 합니다. 이때 사용하는 것이 ~/.ssh/config 파일입니다.
config 파일 작성
# ~/.ssh/config
# 개인 계정
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# 회사 계정
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
여기서 Host 값(github-personal, github-work)은 실제 도메인이 아닌 **별칭(alias)**입니다. 이 별칭을 기억해 두어야 합니다. IdentitiesOnly yes 옵션을 추가하면 지정된 키 외의 다른 키를 시도하지 않으므로 인증 충돌을 방지할 수 있습니다.
연결 테스트
설정이 제대로 됐는지 다음 명령어로 확인합니다.
ssh -T github-personal
# Hi personal-username! You've successfully authenticated...
ssh -T github-work
# Hi work-username! You've successfully authenticated...
두 계정 모두 각각의 사용자명으로 인증 성공 메시지가 표시되면 설정이 완료된 것입니다.
3단계: 저장소별 Git 사용자 정보 설정하기
SSH 인증이 완료됐다고 해서 끝이 아닙니다. 커밋에 남는 이름과 이메일 정보도 계정에 맞게 설정해야 합니다. 그렇지 않으면 회사 저장소에 개인 이메일로 커밋이 올라가는 불상사가 발생합니다.
전역(Global) 설정과 로컬(Local) 설정 구분
# 전역 설정: 기본값(주로 개인 계정)으로 지정
git config --global user.name "개인 닉네임"
git config --global user.email "[email protected]"
# 특정 저장소에서만 회사 계정 사용 (해당 폴더 내에서 실행)
cd ~/work-project
git config --local user.name "회사 이름"
git config --local user.email "[email protected]"
--local 옵션은 해당 저장소의 .git/config 파일에만 설정을 저장합니다. 전역 설정을 덮어쓰지 않으므로 다른 프로젝트에는 영향을 주지 않습니다.
Git의 includeIf 기능으로 디렉토리별 자동 적용
매번 수동으로 설정하기 번거롭다면 ~/.gitconfig에 includeIf 블록을 추가해 디렉토리 경로에 따라 자동으로 설정을 전환할 수 있습니다.
# ~/.gitconfig
[user]
name = 개인 닉네임
email = [email protected]
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
# ~/.gitconfig-work
[user]
name = 회사 이름
email = [email protected]
이제 ~/work/ 디렉토리 안에 있는 모든 저장소는 자동으로 회사 계정 정보를 사용합니다. 설정 한 번으로 이후에는 신경 쓸 필요가 없습니다.
4단계: 저장소 클론 시 올바른 호스트 사용하기
SSH config 설정이 완료됐다면 저장소를 클론할 때 별칭 호스트를 사용해야 합니다. 이 부분을 빠뜨리는 경우가 가장 많습니다.
클론 명령어 비교
# ❌ 기본 방식 (어떤 계정으로 연결될지 불명확)
git clone [email protected]:work-org/project.git
# ✅ 올바른 방식 (config에서 정의한 별칭 사용)
git clone git@github-work:work-org/project.git
git clone git@github-personal:my-username/my-project.git
기존에 클론된 저장소의 원격 URL도 변경할 수 있습니다.
# 기존 저장소의 remote URL 변경
git remote set-url origin git@github-work:work-org/project.git
# 변경 확인
git remote -v
마치며: 한 번 설정으로 평생 편하게
깃헙 계정 여러 개를 관리하는 것은 처음에는 복잡해 보이지만, 핵심 단계를 정리하면 다음과 같습니다.
- 계정별 SSH 키 생성 → 각 계정에 고유한 인증 수단 부여
- SSH config 설정 → 호스트 별칭으로 계정 구분
- Git 사용자 정보 설정 → 커밋 이력에 올바른 계정 정보 기록
- 클론 시 별칭 호스트 사용 → 저장소를 올바른 계정에 연결
includeIf로 자동화 → 디렉토리 기반 설정 자동 전환
이 설정을 한 번만 완료해 두면 이후에는 계정 충돌 걱정 없이 개인 프로젝트와 업무를 완전히 분리할 수 있습니다. 특히 includeIf와 SSH config 조합은 프리랜서나 복수의 조직에 속한 개발자에게 매우 유용합니다.
지금 바로 터미널을 열고 SSH 키 생성부터 시작해 보세요. 생각보다 훨씬 빠르게 설정이 완료될 것입니다. 설정 과정에서 궁금한 점이 있다면 댓글로 남겨주세요!
메타설명: 깃헙 계정 여러 개를 충돌 없이 관리하는 방법을 SSH 키 생성, config 설정, includeIf 자동화까지 단계별로 완벽 정리합니다.