회사와 개인 프로젝트를 하나의 맥북에서 함께 작업하다 보면,
커밋 계정 꼬임이나 푸시 오류, 퍼블릭/프라이빗 접근 이슈가 자주 생긴다.
이 글에서는 GitHub 회사 계정과 개인 계정을 각각 SSH 키로 구분해서 사용하는 방법을 정리한다.
일부 환경에서는 ~/.ssh 폴더가 기본적으로 없을 수도 있다.
이 경우 SSH 키를 저장할 수 있도록 먼저 폴더를 만들어야 한다.
mkdir -p ~/.ssh
-p 옵션은 이미 폴더가 존재해도 에러 없이 넘어가게 해줌
SSH 키는 항상 이 폴더 안에 저장됨
터미널에서 각각 아래 명령어를 입력하여 SSH 키를 생성한다.
ssh-keygen -t ed25519 -C "your_personal_email@example.com"
프롬프트가 뜨면 아래처럼 입력:
~/.ssh/id_ed25519_personal
→ 엔터 2번 (패스프레이즈(비밀번호)는 생략 가능)
|#*+ .o==+ |
|== . .=o |
| o.E . |
|. o .. . |
|oo .. S |
|o . o. o o |
| o o. * |
| + +o.oo o |
|ooo.+o=+oo. |
이런 이모지 나오면 성공
ssh-keygen -t ed25519 -C "your_work_email@company.com"
프롬프트가 뜨면 아래처럼 입력:
~/.ssh/id_ed25519_work
→ 엔터 2번 (패스프레이즈(비밀번호)는 생략 가능)
|#*+ .o==+ |
|== . .=o |
| o.E . |
|. o .. . |
|oo .. S |
|o . o. o o |
| o o. * |
| + +o.oo o |
|ooo.+o=+oo. |
이런 이모지 나오면 성공
예시:
~/.ssh/id_github_personal
~/.ssh/id_github_work
ls ~/.ssh
아래 4개가 보이면 OK:
id_ed25519_personal
id_ed25519_personal.pub
id_ed25519_work
id_ed25519_work.pub
개인 github
cat ~/.ssh/id_ed25519_personal.pub
회사 github
cat ~/.ssh/id_ed25519_work.pub
명령어 입력 후 나오는 값을 복사하여
[GitHub → Settings → SSH and GPG Keys]에서 각각의 계정에 등록.
~/.ssh/config
)nano ~/.ssh/config
아래 내용 추가:
# 개인 계정
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# 회사 계정
Host work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
예: `gh-personal`, `gh-work`, `github-jaehyun`, `office`, `home` 등
중요한 건 나중에 clone 또는 remote 설정 시 `git@:...` 형태로 쓸 거라는 점!
ssh -T git@personal
ssh -T git@work
결과:
Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.
개인 or 회사 github 계정의 이름이 나오면 성공
레포 클론 시, SSH 탭을 눌렀을 때 나오는 url 복사 후
git@github.com:~~/~~.git
을
git@personal:~~/~~.git
로 바꿔 준다고 생각하면 됨. (회사 프로젝트라면 personal 대신 work가 들어가야함.)
git remote set-url origin git@personal:username/repo.git
git config user.name "your user name"
git config user.email "your_personal_email@example.com"
git remote set-url origin git@work:orgname/repo.git
git config user.name "Jaehyun Ahn"
git config user.email "your_work_email@company.com"
git clone git@personal:username/repo.git
cd repo
git config user.name "your name"
git config user.email "your_personal_email@example.com"
git clone git@work:orgname/repo.git
cd repo
git config user.name "your name"
git config user.email "your_work_email@company.com"
항목 | 개인용 | 회사용 |
---|---|---|
SSH 키 | `id_ed25519_personal` | `id_ed25519_work` |
공개 키 등록 | 개인 GitHub 계정 | 회사 GitHub 계정 |
`~/.ssh/config` 설정 | `Host personal` | `Host work` |
clone 주소 | `git@personal:username/...` | `git@work:orgname/...` |
커밋 사용자 | 개인 이메일 & 이름 | 회사 이메일 & 이름 |
git remote -v
로 현재 remote 주소 확인 가능git config user.name
, git config user.email
~/.gitconfig
, 레포별 설정은 .git/config
에 저장됨
오옹 재현이 취업했나~