- 공유 링크 만들기
- X
- 이메일
- 기타 앱
회사 계정과 개인 GitHub 계정을 한 PC에서 동시에 사용하려다 매번 인증 충돌로 시간을 낭비하고 있다면, SSH Config 설정으로 이 문제를 근본적으로 해결할 수 있습니다. 이 글에서는 계정별 SSH 키 생성부터 ~/.ssh/config 분리 설정, 레포별 커밋 계정 관리까지 실무에서 바로 적용 가능한 전체 프로세스를 다룹니다. 5분 투자로 향후 수십 시간의 삽질을 방지하십시오.
| GitHub 다중 계정 관리 완벽 가이드 SSH Config로 회사와 개인 계정 분리하기 |
1. 계정별 SSH 키 생성 및 GitHub 등록
첫 단계는 각 GitHub 계정마다 고유한 SSH 키 쌍을 생성하는 것입니다. 기본 파일명(id_rsa)을 그대로 쓰면 덮어쓰기 위험이 있으므로, -f 옵션으로 파일명을 명시적으로 지정해야 합니다.
- 키 생성 명령어:
cd ~/.ssh ssh-keygen -t rsa -C "work@company.com" -f id_rsa_company ssh-keygen -t rsa -C "personal@gmail.com" -f id_rsa_personal
- Passphrase 입력 프롬프트가 나오면 Enter로 건너뛸 수 있습니다(자동 로그인). 보안이 중요한 환경이라면 패스프레이즈를 설정하고 ssh-agent를 활용하십시오.
- 생성 후
ls ~/.ssh로 id_rsa_company, id_rsa_company.pub, id_rsa_personal, id_rsa_personal.pub 파일 존재를 확인하십시오.
공개키를 GitHub에 등록:
- 공개키 내용 복사:
cat ~/.ssh/id_rsa_company.pub(macOS는pbcopy < ~/.ssh/id_rsa_company.pub사용 권장) - 해당 GitHub 계정 로그인 → Settings → SSH and GPG keys → New SSH key
- Title에 "Company Laptop" 등 구분 가능한 이름 입력, Key 필드에 공개키 전체 붙여넣기 → Add SSH key
- 개인 계정도 동일한 방식으로 id_rsa_personal.pub 등록
주의사항: 공개키(.pub)만 GitHub에 올리고, 개인키(id_rsa_*)는 절대 외부에 노출하지 마십시오. 개인키 파일 권한은 chmod 600 ~/.ssh/id_rsa_*로 설정해 소유자만 읽을 수 있도록 해야 합니다.
2. ~/.ssh/config로 Host 별칭 설정
SSH Config 파일에서 각 계정을 Host 별칭으로 구분하면, Git 명령어 실행 시 자동으로 올바른 키를 선택할 수 있습니다. 이 설정이 다중 계정 관리의 핵심입니다.
vi ~/.ssh/config
아래 내용을 추가하십시오:
# Company Account Host github.com-company HostName github.com User git IdentityFile ~/.ssh/id_rsa_company # Personal Account Host github.com-personal HostName github.com User git IdentityFile ~/.ssh/id_rsa_personal
- Host: Git 명령어에서 사용할 별칭입니다. 직관적인 이름(github.com-company, github.com-personal)을 사용하십시오.
- HostName: 실제 접속할 서버 주소(github.com).
- User: GitHub SSH 접속은 항상 git 사용자입니다.
- IdentityFile: 해당 Host에서 사용할 개인키 경로를 절대 경로로 지정합니다.
파일 저장 후 chmod 600 ~/.ssh/config로 권한을 설정하십시오. 이제 ssh-agent에 키를 등록하고 연결을 테스트합니다:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa_company ssh-add ~/.ssh/id_rsa_personal ssh-add -l # 등록된 키 목록 확인
연결 테스트:
ssh -T git@github.com-company ssh -T git@github.com-personal
각 명령어 실행 시 "Hi [username]! You've successfully authenticated..." 메시지가 나오면 정상입니다. 만약 Permission denied가 발생하면 IdentityFile 경로와 GitHub 공개키 등록 상태를 재확인하십시오.
3. 레포지토리 클론 및 원격 URL 설정
이제 실제 프로젝트를 클론할 때 Host 별칭을 사용해야 합니다. github.com 대신 설정한 Host 별칭을 URL에 넣는 것이 핵심입니다.
- 회사 레포 클론:
git clone git@github.com-company:company-org/project.git
- 개인 레포 클론:
git clone git@github.com-personal:myusername/my-repo.git
기존 레포의 원격 URL을 변경해야 한다면:
cd existing-repo git remote set-url origin git@github.com-company:company-org/project.git git remote -v # 변경 확인
실무 팁: 회사 프로젝트 디렉토리와 개인 프로젝트 디렉토리를 ~/work, ~/personal처럼 물리적으로 분리해두면 관리가 훨씬 편합니다. 클론 시 Host 별칭을 잘못 입력하면 인증 실패가 발생하므로, 최초 클론 직후 반드시 git remote -v로 URL을 검증하십시오.
4. 레포별 커밋 계정(user.email) 설정
SSH 키만 분리해도 push/pull은 가능하지만, 커밋 기록에 올바른 이메일을 남기려면 레포별로 user.email을 설정해야 합니다. 전역(--global) 설정은 기본값일 뿐, 회사 레포에서 개인 이메일로 커밋이 남으면 이력 관리에 혼란이 생깁니다.
각 레포지토리 루트에서 다음 명령어를 실행하십시오:
# 회사 레포 cd ~/work/company-project git config user.name "YourName" git config user.email "work@company.com" # 개인 레포 cd ~/personal/my-repo git config user.name "YourName" git config user.email "personal@gmail.com"
설정 확인:
git config --list --local # 또는 git config --show-origin user.email
고급 설정: 프로젝트가 많다면 ~/.gitconfig에 조건부 include를 사용해 디렉토리별로 자동 전환할 수 있습니다:
# ~/.gitconfig [includeIf "gitdir:~/work/"] path = ~/.gitconfig-work [includeIf "gitdir:~/personal/"] path = ~/.gitconfig-personal
그리고 각 파일에 user 정보를 분리 기록:
# ~/.gitconfig-work [user] name = YourName email = work@company.com # ~/.gitconfig-personal [user] name = YourName email = personal@gmail.com
이 방식은 신규 레포 생성 시에도 디렉토리 위치만으로 자동 적용되므로, 휴먼 에러를 원천 차단할 수 있습니다.
5. 트러블슈팅 체크리스트
설정 후에도 인증 실패가 발생한다면 아래 항목을 순서대로 점검하십시오:
- SSH 연결 테스트:
ssh -T git@github.com-company실행 시 성공 메시지가 나오는가? - 원격 URL 확인:
git remote -v로 origin URL이 Host 별칭을 사용하는가? (예: git@github.com-company:org/repo.git) - ssh-agent 키 등록:
ssh-add -l로 필요한 키가 모두 등록되어 있는가? - 파일 권한:
ls -la ~/.ssh로 개인키 파일이 600, config 파일이 600인가? - 공개키 등록: GitHub 계정의 SSH keys 페이지에서 해당 공개키가 등록되어 있고, 최근 사용 기록(Last used)이 표시되는가?
자주 발생하는 실수:
- 클론 시 Host 별칭 대신 github.com을 그대로 사용 → 기본 키로 인증 시도하여 실패
- config 파일에서 IdentityFile 경로 오타 → "Permission denied (publickey)" 에러
- 레포별 user.email 미설정 → 커밋은 성공하나 잘못된 계정으로 기록됨
문제 발생 시 ssh -vT git@github.com-company로 상세 로그를 확인하면 어느 단계에서 실패했는지 파악할 수 있습니다.
요약 및 Action Item
다중 GitHub 계정 관리는 (1) 계정별 SSH 키 생성 및 등록, (2) ~/.ssh/config에 Host 별칭 설정, (3) 클론/원격 URL에 Host 별칭 사용, (4) 레포별 user.email 설정의 4단계로 완성됩니다. 이 구조를 한 번 구축해두면 계정 전환 없이 프로젝트별로 자동 인증되므로, 생산성이 크게 향상됩니다.
당장 실행할 Action Item: 현재 사용 중인 모든 레포지토리의 루트에서 git config user.email을 실행해 설정 상태를 점검하고, 누락된 레포는 즉시 올바른 이메일로 설정하십시오. 이미 잘못된 이메일로 커밋한 이력이 있다면, git rebase나 git filter-branch로 이력을 수정할 수 있으나 협업 레포에서는 신중히 진행해야 합니다.
#함께 읽으면 좋은 글
GitHub 회사 계정과 개인 계정 분리하기 SSH Config 완벽 가이드 : 바로보기
댓글
댓글 쓰기