폴더별 github 계정 분리하기

🌙🌱·2021년 12월 1일
2
post-thumbnail

계정별 ssh key 생성

  1. 홈 디렉토리(~) 폴더 안 .ssh 폴더(숨긴 풀더)로 이동

    • 홈 디렉토리(~) 폴더는 window의 경우, c: / 사용자 / 사용자 아이디 폴더에 해당한다.
    • ~폴더 안에 .ssh 폴더가 없다면 생성한다.
# .ssh 폴더 생성 명령어
$ mkdir ~/.ssh
# .ssh 폴더 안으로 이동 명령어
$ cd ~/.ssh
  1. 계정별 ssh key 생성
  • userA 대신 해당 계정을 구분할 이름을 넣어주면 된다.
  • userA가 사용할 github 아이디@email.com는 userA가 github에서 로그인할 때 사용하는 계정을 넣어준다.
# userA 계정에 대한 ssh key 생성
$ ssh-keygen -t rsa -C "userA가 사용할 github 아이디@email.com" -f "id_rsa_userA"
  • userB 대신 해당 계정을 구분할 이름을 넣어주면 된다.
  • userB가 사용할 github 아이디@email.com는 userB가 github에서 로그인할 때 사용하는 계정을 넣어준다.
# userB 계정에 대한 ssh key 생성
$ ssh-keygen -t rsa -C "userB가 사용할 github 아이디@email.com" -f "id_rsa_userB"
  • 이 때, 아래와 같이 비밀번호를 설정하라고 뜨는데 굳이 설정하지 않을 거라면 그냥 엔터를 눌러 넘어가면 된다.
Enter passphrase (empty for no passphrase):
  1. 생성된 ssh key 확인

위와 같이 ssh key를 생성하고 나면 .ssh 폴더 안에

  • id_rsa_userA
  • id_rsa_userA.pub
  • id_rsa_userB
  • id_rsa_userB.pub

이 4개의 파일이 생성되었을 것이다.

.pub이 붙은 파일은 공개키(public key)이다.
붙지 않은 파일은 비밀키(private key)이다.

ssh-agent에 ssh key의 비밀키를 등록

  • 현재 폴더가 ~/.ssh 여야 한다.
$ ssh-add id_rsa_userA
$ ssh-add id_rsa_userB
  • 만약 이때 오류가 발생한다면
$ eval "$(ssh-agent -s)"

로 초기화를 해준다.

Github에 ssh key의 공개키를 등록

userA

  1. userA github 계정에 로그인한다.
    여기에 userA 계정의 ssh key 공개키를 등록할 것이다.

  2. 우측 상단의 프로필 이미지를 클릭 > Settings 클릭

  3. 좌측 메뉴 중 SSH and GPG keys 클릭 > New SSH key 클릭

  4. Title엔 해당 ssh keys를 구분할 이름을 정해준다.
    ex) userA - desktop MAC

  5. Key엔 ssh key의 공개키를 복사해 붙여 넣어준다.

// ssh key의 공개키 확인
$ cat id_rsa_userA.pub
  • ssh-rsa로 시작하는 공개키가 나오는데 ssh-rsa를 포함해 복사해 붙여 넣는다.
  1. Add SSH Key 클릭
  1. userB github 계정에 로그인한다.

userB

  1. userA 와 동일하게 진행해준다.

config 파일 설정

  1. .ssh 폴더 안에 config 파일을 생성한다.
  • 안에 내용을 적을 것이므로 vi로 생성하면 바로 내용을 적을 수 있다.
$ vi ~/.ssh/config
  1. config 안에 아래와 같이 작성한다.
# 여기는 주석이다. - userA 깃험 계정 - for work
Host github.com-userA
	HostName github.com
    IdentityFile ~/.ssh/id_rsa_userA
    User userA
    
# 여기는 주석이다. - userB 깃헙 계정 - for study
Host github.com-userB
	HostName github.com
    IdentityFile ~/.ssh/id_rsa_userB
    User userB

폴더 별 path 설정

  1. ~/.gitconfig 파일을 열어 아래의 정보를 삭제한다.
  • 이는 Global로 설정해둔 user의 정보이다.
[user]
	email = userG@email.com
    name = userG
  1. 그리고 ~/.gitconfig 파일을 맨 아래에 아래의 정보를 추가한다.
[includeIf "gitdir:~/userA계정을 쓸 폴더의 경로"]
  	path = .gitconfig-userA
    
[includeIf "gitdir:~/userB계정을 쓸 폴더의 경로"]
  	path = .gitconfig-userB
  1. path에 정의한 각각의 .gitconfig-계정명 파일을 만들고 내용을 입력한다.

userA path

  • path가 .gitconfig-userA이므로 ~/.gitconfig-userA에 생성해야 한다.
  • 생성한 파일엔 아래와 같은 내용을 입력한다.
[user]
	email = userA@email.com (여기는 해당 폴더에서 사용하고자하는 github 계정의 이메일을 입력한다.)
    name = userA
    
[github]
	user = 여기는 반드시 github 프로필의 이름을 넣어줘야 한다.

userB path

  • userA와 동일하다.

폴더별로 다른 github 계정이 적용되는 지 확인

userA를 사용하는 폴더에서 아래 명령어 입력

  • userA 계정의 이름과 이메일이 나온다면 적용이 된 것이다.
$ git config user.name
$ git config user.email

userB를 사용하는 폴더에서 같은 명령어 입력

  • userB 계정의 이름과 이메일이 나온다면 적용이 된 것이다.

만약 위 명령어 입력 시 아무 것도 나오지 않는다면 위에 설정에 잘못된 곳은 없는 지 다시 확인한다.
특히 path 경로나 파일 이름, 계정 이름 등 대소문자까지 모두 일치해야함을 주의하자.

SSH를 이용한 git clone

git repository clone 옵션 중 SSH의 주소는 아래와 같은 형식이다.

  • git@github.com:userA/repositoryName.git

이때, 이걸 그대로 git clone 하면 안 된다.
git@github.com 뒤에 -userA 와 같이 사용자 이름을 붙여줘야 한다.
이건 위에서 $ git config user.name해서 나온 사용자 이름을 붙여주면 된다.

처음 repository clone 시,

# 처음 repository clone 시 설정
$ git clone git@github.com-userA:userA/repositoryName.git

이미 repository가 clone 되었을 시,

이미 clone된 repository에 설정을 변경해주고 싶다면 아래와 같이 set-url을 이용하면 된다.

# 이미 clone된 repository의 설정 변경
$ git remote set-url origin git@github.com-userA:userA/repositoryName.git
profile
프론트 엔드 개발자 지향

0개의 댓글