반응형

하나의 맥북에서 다른 두 개의 깃헙 계정을 사용해 푸시를 하고 싶은 상황이 생겨 알아보니 ssh-key를 사용하면 가능하였다.

1. ssh-key 생성하기

$ cd ~/.ssh

$ ssh-keygen -t rsa -C "{github 계정 이메일}"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): {key 이름 지정}

$ ls
-rw-------  1 hongseokjun  staff   411B  3  7 00:35 id_rsa_work
-rw-r--r--  1 hongseokjun  staff   102B  3  7 00:35 id_rsa_work.pub
-rw-------  1 hongseokjun  staff   411B  3  7 00:35 id_rsa_personal
-rw-r--r--  1 hongseokjun  staff   102B  3  7 00:35 id_rsa_perosnal.pub
  • ~/.ssh 디렉토리로 이동 후 두 번째 명령어를 실행하고 {key 이름 지정} 부분에 원하는 key 이름을 입력해준다. (ex. id_rsa_work)
  • 위의 과정을 필요한 계정만큼 반복한다. (여기서는 두 개를 예로 듦.) 끝이나면 id_rsa_work, id_rsa_work.pub, id_rsa_personal, id_rsa_personal.pub라는 이름의 파일들이 생성된 것을 확인한다.

 

2. ssh-agent에 ssh-key 등록

$ ssh-add -K ~/.ssh/id_rsa_work
$ ssh-add -K ~/.ssh/id_rsa_personal

 

3. GitHub에 공개키 등록

  1. 로컬에서 생성한 공개키를 복사한다.
  2. $ pbcopy < ~/.ssh/id_rsa_work.pub
  3. github에 ssh-key에 해당하는 계정으로 로그인
  4. github 계정의 settings - SSH and GPG keys 메뉴를 클릭한다.
  5. 스크린샷 2021-03-07 오후 10 58 53
  6. New SSH key를 클릭
  7. 스크린샷 2021-03-07 오후 11 01 41
  8. title에는 key에 대한 이름을 지정하고 key에 1번에서 복사한 내용을 붙여넣어 준다.
  9. 스크린샷 2021-03-07 오후 11 02 59
  10. 필요한 계정만큼 반복해준다.

 

4. ssh config

$ cd ~/.ssh
$ vi config            # 없다면 생성

# 아래 내용을 입력
Host github.com-work
    HostName github.com
    User work
    IdentityFile ~/.ssh/id_rsa_work

Host github.com-personal
    HostName github.com
    User personal
    IdentityFile ~/.ssh/id_rsa_persanl
  • Host : 저장소를 구분하는 일종의 key
  • IdentityFile : ssh-key를 지정
  • ssh 테스트 해보기
$ ssh -T git@github.com-work
Hi {GithubID}! You've successfully authenticated, but GitHub does not provide shell access.
  • 아래 문구가 뜬다면 정상이다.

 

5. 특정 프로젝트의 git config

$ vi {프로젝트}/.git/config

...
[user]
    email = {푸시할 계정의 이메일}
  • git의 global config가 설정되어있는 경우, 위와 같은 설정을 해주어야 해당 계정으로 푸시를 할 수 있음.

 

6. remote 설정

github에서 git ssh로 clone을 받을 수 있다. : git@github.com-work:work/{프로젝트}.git

또는 이미 remote가 지정되어 있는 상태라면 아래 명령어를 통해 ssh로 바꿀 수 있다.

$ git remote set-url origin git@{Host}:{User}/{프로젝트}.git

ex. git remote set-url origin git@github.com-work:work/{프로젝트}.git

 

  • 참고

https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

https://velog.io/@sonypark/GitHubSSH%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%97%AC%EB%9F%AC%EA%B0%9C%EC%9D%98-%EA%B9%83%ED%97%88%EB%B8%8C-%EA%B3%84%EC%A0%95-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-6mk3iesh0u

반응형