기본 콘텐츠로 건너뛰기

[GIT] macOS에서 여러 개의 Github.com 계정 사용하기

[Git] How to use multiple account of github on macOS

github에 여러 개의 계정이 있고, Visual Studo Code나 터미널에서 사용하다 보면 Permission errorUser Denied 등의 오류를 만날 수 있다.

이런 문제들을 해결하고 SSH Key를 이용해서 여러 개의 github 계정을 설정하고 사용하는 방법을 정리해 놓는다.

문제점

단일 계정만 사용할 경우라면 pull, push를 처음할 때 계정 권한을 확인하는 프롬프트가 뜨고, 계정 정보를 입력하면 키 체인에 보관되기 때문에 다음 부터는 입력하지 않아도 정상적으로 처리가 된다.

그러나 또 하나의 계정을 더 만들어서 Repository 동기화를 하려고 하면 키 체인에 저장된 정보 때문에 이전 계정의 정보를 사용하기 때문에 계속 오류가 발생하게 된다.

해결 방법

해결 방법은 간단하다. 각 계정에 대한 SSH Key 생성하고 github에 등록해서 관리하면 각 계정별 Repository에 대한 걱정 없이 편리하게 사용할 수 있다.

우선 Remote Repository를 확인해 보도록 하자.

# 현재 설정된 원격 저장소 보기
$ git remote -v

# 현재 저장소 설정 조회 (저장소 루트 폴더에 .git/config 파일에 정보가 존재한다)
$ git config --list

기존에 입력되어 있는 키 체인 정보 삭제

  1. Spotlight 검색(F12) 등으로 키체인 접근 앱 실행

    ![Spotlight 검색](http://ccambo.github.io/images/content /spotlight_key_chain_access.png?featherlight=false)

  2. 키체인 접근 앱에서 로그인을 선택하고 github.com을 찾아서 삭제

    Key chain access

참고

  • macOS는 SSH 키들을 ~/.ssh 디렉터리에 관리한다.
  • 이후 작업은 모두 이 경로에서 처리하는 것을 기준으로 한다.
  • github는 계정당 하나의 SSH Key만 등록 가능하므로 사용할 계정만큼 생성하고 처리해 주면 된다.

이 문서에서는 ccambomorris라는 두 개의 계정을 사용하는 것으로 가정한다.

SSH Key 생성 및 등록

  • ssh key 생성

    $ ssh-keygen -t rsa -b 4096 -C "ccambo@gmail.com"
    
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/morris/.ssh/id_rsa):   id_rsa_ccambo  # 생성할 파일 명 입력 (아니면 그냥 Enter key, 이 경우는   id_rsa라는 기본 파일로 생성됨)
    Enter passphrase (empty for no passphrase): # 비밀번호 설정할 경우 입력   (아니면 Enter key)
    Enter same passphrase again: # 비밀번호 설정할 경우 입력 (아니면 Enter key)
    ...
  • ssh key macOS에 등록

    # ssh agent 데몬으로 동작 시키기 (이 명령은 한번만 실행)
    $ eval "$(ssh-agent -s)"
    Agent pid 14194
    
    # SSH Key 추가
    $ ssh-add -K ~/.ssh/id_rsa_ccambo
    Identity added: /Users/<사용자 계정>/.ssh/id_rsa_ccambo (ccambo@gmail.   com)

위의 단계를 사용할 계정 갯수만큼 반복한다.

이 문서의 샘플 기준이라면 아래와 같이 네 개의 파일이 생성되어야 한다.

  • id_rsa_ccambo: ccambo 계정 비밀 키
  • id_rsa_ccambo.pub: ccambo 계정 공개 키
  • id_rsa_morris: morris 계정 비밀 키
  • id_rsa_morris.pub: morris 계정 공개 키

github에 공개키 등록

생성한 계정별 공개키 파일의 내용을 github에 등록한다.

github.com에 로그인 하면 우측 상단의 계정 이미지를 클릭하고 펼쳐진 서브 메뉴들에서 Settings 를 선택한다.

계정 Settings 화면의 좌측 메뉴에서 SSH and GPG keys 메뉴를 클릭하면 SSH Keys 화면의 우측 상단에 New SSH Key 버튼을 눌러서 다음과 같이 설정한다.

  • Title: 식별할 수 있는 아무 이름이든 지정한다. (여기서는 ccambo SSH)
  • Key: 생성된 id_rsa_ccambo.pub파일의 내용을 그대로 복사해 넣는다.

참고

  • 기존에 사용하던 SSH Key각 존재할 수 있다. 여러 개를 생성해서 (Title까지 동일해도 상관없다) 사용할 수 있지만, 가능하면 하나의 SSH Key만 유지하는 것이 좋다. 이전에 등록한 것이 있다면 삭제하도록 한다.
  • 공개키 파일의 내용을 복사하지 않고 처리하려면 터미널에서 아래와 같이 명령을 사용해도 된다.
    $ pbcopy < ~/.ssh/id_rsa_ccambo.pub

ssh config 파일 설정

대 부분 여러 개의 SSH Key를 운영하기 때문에 매번 서버에 접속할 때마다 SSH Key를 지정하는 것도 번거롭기 때문에 설정으로 저장해 놓고 사용하는 방법을 권장한다.

~/.ssh 디렉터리에 config 파일이 존재하는지를 확인하고 없다면 새로 생성하도록 한다.

github.com에 대한 접속 정보를 아래와 같이 설정해 주면 된다.

Host github.com-ccambo    # ccambo 계정 용
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_ccambo   # 비밀 키 파일
  User ccambo             # github.com 계정 명

Host github.com-morris    # Morris 계정 용
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_morris   # 비밀 키 파일
  User morris             # github.com 계정 명

사용방법

github.com에 Repository 정보에서 Code를 클릭하면 HTTPS, Github CLI, SSH 의 세 가지 Clone 용 주소가 보인다. 이 중에서 SSH 방식을 선택하고 사용하면 된다.

SSH를 이용하는 포맷은 다음과 같다.

format : git@github.com:<account name>/<repository name>.git
Sample :  git@github.com:ccambo/ImageCDN.git

그런데 SSH Config를 구성할 때 다음과 같이 Host Name을 구성했다.

github.com-<account name>

따라서 Repository를 Clone 할 떄나 Remote Add 를 수행할 떄 Repository URL은 다음과 같이 구성되어야 한다.

format : git@<ssh config에 정의한 HOST 명>:<account name>/<repository name>.git
Sample : git@github.com-ccambo:ccambo/ImageCDN.git
  • 신규로 Clone

    $ git clone git@github.com-ccambo:ccambo/ImageCDN.git
  • 신규로 Remote Repository 추가

    $ git remote add origin git@github.com-ccambo:ccambo/ImageCDN.git
  • 이전 Remote Repository 변경

    $ git remote set-url origin git@github.com-ccambo:ccambo/ImageCDN.git

참고 자료

댓글