여러 개의 GitHub 계정 사용을 위한 SSH key 등록하기

Updated:

여러 개의 GitHub 계정을 사용해야 하는 경우가 있을 것이다. 회사의 GitHub 계정과 개인 계정은 분리하고 싶다든지.. 프로젝트에 따라서 GitHub 계정을 분리했다던지..하는 이유가 있을 경우다. 여러 개의 GitHub 계정을 사용하면 일반적으로 방법으로는 SSH key를 1개 밖에 등록하지 못한다. 등록된 SSH key가 지원하는 GitHub 계정은 SSH를 사용한 Clone을 할 수 있지만 다른 계정은 SSH를 사용한 Clone을 할 수 없어서 귀찮은 일이 발생한다. 본인도 한동안은 귀찮은 상황에서 빠져나오지 못하다가 방법이 있지 않을까 해서 찾아본 내용이다. 테스트 환경은 리눅스(=우분투)이지만 흐름만 파악한다면 윈도우에도 적용할 수 있을 것이다.

1. SSH Key 생성하기

일단, 필요한 개수의 SSH key를 생성하자. 당연한 이야기이겠지만 GitHub 계정 수 만큼 key를 생성하면 된다. SSH key 생성 방법은 GitHub Help를 참고하였다.

GitHub 계정의 email 주소를 이용하여 키를 생성한다. 키를 저장할 파일 경로를 지정하게 된다. email 주소를 기반으로 알기 쉬운 파일명을 기재하자. 필자의 경우, id_rsa_devinlifeidea 와 같은 파일명을 사용하였다. 파일명을 기재하지 않으면 기본 파일명(id_ras)을 사용하여 overwrite하게 된다.

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa): /home/you/.ssh/id_rsa_devinlifeidea

ssh-agent를 실행하고 key 파일를 등록한다.

$ eval "$(ssh-agent -s)"
> Agent pid 59566

key 파일을 등록할때는 위의 과정에서 기재한 파일명으로 기재한다. 아래 예제 그대로 입력하면 안되며, 본인의 키 파일명을 기재한다.

$ ssh-add ~/.ssh/id_rsa_devinlifeidea

위 과정을 2번 반복해서 SSH Key 2개를 만들어낸다.(필요한 Key 개수가 2개 이상이면 그만큼 더 실행한다.) 그리고, GitHub 계정으로 로그인해서 Settings->SSH and GPG Keys->New SSH key 메뉴로 해당 계정에 해당하는 public key 정보를 입력한다. 이 경우도 GitHub 계정 별로 SSH key를 등록해야 한다.

2. SSH config 수정하기

SSH 기본 설정 파일을 생성해주고, 각 SSH key가 어떤 계정으로 연결되어야 하는지 설정 정보를 기입한다.

$ cd ~/.ssh/
$ touch config

생성한 config 파일에 아래와같은 형태로 계정 정보를 기입해준다. 본인이 Host github.com- 뒤로 오는 문자열이 GitHub ID가 된다. 아래 예제에서 보면 devinlife와 dummytest가 GitHub ID 문자열이다. 그리고 그 밑으로 해당 계정에 해당하는 SSH key 파일 경로를 기입해준다.

$ cat config 
#devinlife account
Host github.com-devinlife
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_devinlifeidea

#dummytest account
Host github.com-dummytest
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_dummytest

3. clone repo 수행하기

계정 별 SSH key 등록이 완료된 상태이다. 이제 아래와같은 형태로 git clone을 실행해보자. github.com 뒤에 ssh config 파일에 기재해둔 Host 정보를 같이 기입하는 것이 포인트이다. 이렇게 Host 정보를 같이 기입하면 해당 SSH key를 찾아서 사용하게 되는 것이다.

git clone git@github.com-devinlife:devinlife/docs.git

clone이 완료되면 해당 git repo는 SSH key를 정상적으로 사용하게 된 것이다. 이렇게 여러 개의 GitHub 계정을 등록하면 repo 별로(=local config) 계정 이름과 email을 지정해줘야지 git commit 시에 계정 정보가 제대로 올라간다.

$ cd docs
$ git config user.name "devinlife"
$ git config user.email "devinlifeidea@gmail.com" 

모든 설정은 완료되었다. 이제 멑티 계정으로 열심히 커밋만 생성하면 된다.



Leave a comment