← 글 목록

notes

GitHub 계정 여러개 사용하는 방법

GitHub 계정 여러 개를 SSH 키·host 설정으로 분리해 사용하는 방법.


1. SSH Key 생성하기

  • github에서 사용하는 계정이 다음과 같다고 가정합니다.
  • userA (사용 email : userA@example.com)
  • userB (사용 email : userB@example.com)

  • iTerm 실행 → 다음 명령어 입력
  • 나중에 추가된 SSH 키를 확인하기 위해 기존 파일 목록을 확인하는 과정입니다.
cd ~/.ssh
ls -al
  • 다음 명령어를 입력 → Enter 클릭→ Enter 클릭
ssh-keygen -t rsa -C "userA@example.com" -f "id_rsa_userA"
  • 다음 명령어를 입력 → Enter 클릭→ Enter 클릭
ssh-keygen -t rsa -C "userB@example.com" -f "id_rsa_userB"

  • 다음 명령어를 입력합니다.
  • SSH key가 생성된 것을 확인하기 위한 과정입니다.
  • .pub 확장자가 붙은 파일이 공개키 파일입니다.
  • .pub 확장자가 붙지 않은 파일이 개인키 파일입니다.
ls -al ~/.ssh

2. ssh-agent에 새 SSH 개인키 추가하기

  • 다음 명령어를 입력합니다.
  • 백그라운드에 ssh-agent를 실행시켜주는 과정입니다.
  • 표시되는 pid 값은 매번 변하므로, 아래의 사진과 달라도 문제가 되지 않습니다.
eval "$ (ssh-agent -s)"
  • 다음 명령어를 입력합니다.
  • userA와 userB의 SSH 개인키를 ssh-agent에 추가하는 과정입니다.
ssh-add ~/.ssh/id_rsa_userA
ssh-add ~/.ssh/id_rsa_userB

  • 다음 명령어를 입력합니다.
  • ssh-agent에 정상적으로 SSH 개인키가 추가되었는지 확인하는 과정입니다.
ssh-add -l

3. GitHub에 새 SSH 공개키 추가하기

  • 다음 명령어를 실행 → id_rsa_userA.pub의 내용을 복사
code ~/.ssh/id_rsa_userA.pub

  • userA로 GitHub 로그인 → Settings 클릭

  • SSH and GPG keys 클릭 → New SSH key 클릭

  • Title 입력 → Key에 복사한 공개키 파일 내용을 붙여넣기 → Add SSH key 클릭

  • 다음 명령어를 실행 → id_rsa_userB.pub의 내용을 복사
code ~/.ssh/id_rsa_userB.pub
  • 다음 명령어를 실행 → 내용을 복사

  • userB로 GitHub 로그인 → Settings 클릭

  • SSH and GPG keys 클릭 → New SSH key 클릭

  • Title 입력 → Key에 복사한 공개키 파일 내용을 붙여넣기 → Add SSH key 클릭

4. SSH config 파일 설정하기

  • 다음 명령어를 입력합니다.
cd ~/.ssh
code config
  • config 파일에 다음 내용을 추가합니다.
  • Host에 대한 값이 중요합니다.
  • 나중에 ssh로 연결할 때 Host 지시자에 지정된 값이 사용됩니다.
  • 따라서 구분하기 쉽고 기억하기 편리한 이름으로 작성하는 것이 좋습니다.
#userA에 대한 SSH 설정
Host github.com-userA
    HostName github.com
    User userA
    IdentityFile ~/.ssh/id_rsa_userA

#userB에 대한 SSH 설정
Host github.com-userB
    HostName github.com
    User userB
    IdentityFile ~/.ssh/id_rsa_userB

5. SSH 연결 테스트하기

  • 다음 명령어를 입력합니다.
ssh -T git@github.com-userA
ssh -T git@github.com-userB

6. SSH로 clone 받기

  • 이제는 remote Repository를 clone 받을 때, HTTP 프로토콜이 아닌 SSH로 clone을 받아야 합니다.
# userA 계정을 사용하는 경우
git clone git@github.com-userA:github계정/레포지토리명.git
git clone git@github.com-kviruslab:kviruslab-dev/k1-BE.git

# userB 계정을 사용하는 경우
git clone git@github.com-userB:github계정/레포지토리명.git