[Git] Github 회사계정과 개인계정으로 분리하기 위한 ssh key 생성하기

2020-07-14

하나의 컴퓨터에서 github 계정 2개 만들어서 관리하기

내 환경: 회사컴퓨터 한대로 개인 github 계정과 회사 github 계정을 번갈아가면서 관리하고 싶었음. 구글링을 통해 알아보니, ssh key를 여러개 만듦으로서 계정을 관리할 수 있다고해 ssh-keygen 툴로 키를 생성했다.

  • ssh-keygen 툴을 활용하기 위해서는 Git이 설치되어야함. git bash로 명령어를 실행해야하기 때문~
  • 운영체제는 window를 기반으로 함
1. 경로는 user/사용자설정이름/.ssh 폴더에 만들어야하고, 이메일은 github 계정을 만들때 등록한 email 사용
  $ ssh-keygen -t rsa -C 'myemail@email.com'
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa):id_rsa_personal

별도로 분리해야하기때문에 이름은 id_rsa_personal로 설정했다. 그 다음 passphrase 를 만들라고 뜰건데, 만들어도 되고 안만들어도 돼서 난 그냥 안만들구 ENTER키 두번 누름 이와 같은 과정으로 id_rsa_company도 만들었다. (id_rsa_company는 회사 github계정 이메일로 만듦)

다 만들고 .ssh 폴더를 보면 id_rsa_personal, id_rsa_personal.pub / 그리고 id_rsa_company, id_rsa_company.pub 파일이 만들어져있는걸 확인할 수 있다.

  cd .ssh // .ssh 폴더 들어가서
  $ ls -al // directory 안에 파일들 확인하기
2. ssh key 추가 후 저장 -> Github 계정 setting에 공개키 등록
  eval "$(ssh-agent -s)"

ssh agent를 실행한 후

  ssh-add ~/.ssh/id_rsa_personal
  ssh-add ~/.ssh/id_rsa_company

ssh key를 추가하고 나서

  ssh-add -l

ssh key를 저장한다.

github settings에 들어가 SSH and GPG keys 메뉴 New SSH key 버튼을 클릭해서 위에서 생성한 .pub 파일의 내용을 복사해서 넣으면 됌

  car ~/.ssh/id_rsa_personal.pub // 내용 출력됌

회사 계정도 같은 방법으로 .pub파일 등록

3. .ssh 폴더에 config 파일 생성 후 설정
  $ touch ~/.ssh/config
  # 개인 계정
  Host github.com-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_personal

  # 회사 계정
  Host github.com-company
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_company

Host는 접속주소 / IdentityFile은 생성해놨던 ssh key의 경로

4. git repository 의 .git 폴더 > config 파일 변경
  git remote -v

로 remote 주소를 체크해보면, remote 주소가 나올것이다. 근데 remote 주소를 .ssh폴더의 config 파일처럼 변경해줘야함

  [remote "origin"]
    url = git@github.com:{GithubID}/{RepositoryName}.git
  • 개인계정이 사용할 .git 경로 config 파일
    [remote "origin"]
    url = git@github.com-personal:{개인ID}/{RepositoryName}.git
    
  • 회사계정이 사용할 .git 경로 config 파일
    [remote "origin"]
    url = git@github.com-company:{회사ID}}/{RepositoryName}.git
    

설정 후 확인해보기

  $ ssh -T git@github.com-personal
  Hi {개인ID}! You've successfully authenticated, but GitHub does not provide shell access.

  $ ssh -T git@github.com-company
  Hi {컴퍼니ID}! You've successfully authenticated, but GitHub does not provide shell access.
5. git repository의 계정 격리하기
  $ git config --local user.name "Your Name"
  $ git config --local user.email "Your Email"

글로벌 계정과 충돌되지 않게 local 설정 먹여서 레파지토리 계정을 분리해준다. 나같은 경우는 회사 프로젝트에 commit, push를 할 때 글로벌로 설정이 되어있는지 계속 개인ID로 기록이 남았다. 위와 같이 계정을 격리하고 나니 회사프로젝트에는 격리해놓은 아이디로 기록이 남았고, 개인프로젝트에는 내 개인계정으로 기록이 남았음! 내가 원하는대로 된다 !!!

여튼간에 github 계정을 분리하지 못해 개인블로그를 관리하지 못했는데 이와 같이 설정해놨으니 부지런히 관리해야겠당.

도움받은 블로그 출처

[GitHub] SSH를 이용해 여러개의 깃허브 계정 사용하기

Github 다수 계정을 위한 SSH key 설정 :: 마이구미

GitHub 여러 계정을 한 컴터에서 사용하기