개발공부/그 외

[GitHub] 깃허브 여러 계정 사용하기

키크니개발자 2022. 3. 29. 23:50

안녕하세요!

키크니 개발자 입니다. 🦒

 

현재 한 대의 맥북으로 회사에서 사용하고 있는데,

개인적으로도 공부할 때도 같이 사용하고 싶어서 깃허브 계정을 여러개 적용하는 방법을 알아보았습니다.

(아무래도 집에는 윈도우 노트북이 있는데 개발할 때 사용하기에 어려운 감이 있더라구요 😂 )

 

GitHub repository 마다 계정을 따로 적용시키는 것 을 중점으로 두었습니다.

 

깃허브 여러 계정 사용 방법

  1. ssh key 생성하기
  2. ssh config 설정하기
  3. git config 설정하기
  4. 테스트하기

1. ssh key 생성하기

  • 터미널에서 /Users/본인닉네임/.ssh 으로 들어갑니다.
  • ex) /Users/hyerinkim 에서 cd ~/.ssh
  • 처음에는 ssh key 생성된 것이 없는 것을 알 수 있습니다.
  • $ ssh-keygen -t rsa -C "your_email@example.com"
    • 위 명령어로 ssh key를 생성할 수 있습니다.
    • 이메일 부분은 자신의 깃허브 계정 이메일을 사용하면 됩니다.
    • ex) ssh-keygen -t rsa -C "tytntu@naver.com"
  • Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/hyerinkim/.ssh/id_rsa):
    • 해당 문구가 나오면 사용할 ssh key의 이름을 입력합니다.
    • 개인 프로젝트를 관리할 ssh key는 id_rsa_me 라고 지정하였습니다.
    • Enter passphrase (empty for no passphrase) / Enter same passphrase again 에는 비밀번호를 따로 입력해주었습니다.
  • 입력을 완료하면 id_rsa_me, id_rsa_me.pub 파일이 생성된 것을 확인할 수 있습니다.
회사 계정도 위와 같은 방법으로 진행합니다.
  • 회사 계정 ssh key 이름은 id_rsa_work 로 지정하였습니다.
  • id_rsa_me, id_rsa_me.pub, id_rsa_work, id_rsa_work.pub
  • ssh key 파일이 생성된 것을 확인할 수 있습니다.
⭐️  .pub 이 붙은 파일은 공개키이고, 붙지 않은 파일은 비밀키입니다.
비밀키는 절대 공개해서는 안됩니다. 공개키는 추후 GitHub에서 ssh key 를 등록할 때 필요합니다.**
  • eval "$(ssh-agent -s)"
    • ssh agent 를 실행합니다.
  • ssh-add -K ~/.ssh/id_rsa_me
    • ssh key 를 추가합니다.

1-2. GitHub에 공개키 등록

  • GitHub → setting → SSH and GPG keys → new SSH key 버튼 클릭 후 위에서 생성한 .pub 파일의 내용을 복사해서 넣으면 됩니다.
    • .pub의 내용을 확인하려면 해당 명령어를 사용하면 됩니다.
    • cat /Users/본인닉네임/.ssh/id_rsa_me.pub
    • 위 ssh key를 복사해 줍니다. ssh-rsa ~~ email@example.com (ssh-rsa 부터 깃허브 이메일까지)
    • cat id_rsa_me.pub | pbcopy (~/.ssh 에서 명령어 실행) 해당 명령어를 사용하게 되면 간편하게 내용을 복사할 수 있습니다.
     
회사 계정도 위와 같은 방법으로 진행합니다.

2. ssh config 설정하기

GitHub에서 각각의 ssh key로 접근할 수 있게 해주기 위해서 설정히 필요합니다.

/Users/본인닉네임/.ssh/ 에서 config 파일을 직접 만들어줘야 합니다.

config파일에 아래와 같이 내용을 입력합니다.

~/.ssh 위치에서 vi config 명령어를 입력한 후 아래 내용을 입력합니다.

# 개인 계정
Host github.com-me
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_me

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

위의 내용을 기입한 후 :wq 를 입력 후 엔터를 치면 저장이 됩니다.

여기서 중요한 것은 HostIdentityFile 입니다.

  • Host: 이 값은 저장소 주소 불러올 때 쓰입니다. 저장소를 구분하는 일종의 Key라고 생각하면 됩니다.
  • IdentityFile: ssh key의 경로입니다. 각 계정의 ssh key의 경로와 이름을 입력해주면 됩니다.
  • 개인계정 : id_rsa_me, 회사계정 : id_rsa_work

위 설정은 Host가 github.com-work일 때 실제 Host는 github.com를 사용하고

SSH Key 파일은 ~/.ssh/id_rsa_work를 사용하라는 의미입니다.

여기서 Host는 git clone 할 때 지정하는 Host를 말합니다.

따라서 클론하거나 리모트 저장소를 등록할 때 Host를 수동으로 변경해줘야 합니다.

예를 들어, 원래 주소가 git@github.com:rinikim/repository.git 일 경우 clone 할 때는 git@github.com-work:rinikim/repository.git으로 해줘야 합니다.(github.com -> github.com-work)

3. git config 설정

git config 조회

git config --list

마지막으로 깃허브 저장소가 있는 폴더로 이동한다..git/ 경로에 있는 config 파일을 열어봅니다.

[remote "orgin"]
url = git@github.com:{GithubID}/{RepositoryName}.git

위의 부분을 다음과 같이 변경한다. (여기서 .ssh/config 파일에서 설정한 Host 값이 쓰입니다.)

  • 개인 계정이 사용할 .git/config 파일
[remote "orgin"]
url = git@github.com-me:{GithubID}/{RepositoryName}.git
  • 회사 계정이 사용할 .git/config 파일
[remote "orgin"]
url = git@github.com-work:{GithubID}/{RepositoryName}.git

4. 테스트

  • 깃허브 저장소에 연결된 로컬 터미널에서 아래 명령어를 쳐서 SSH key가 잘 동작하는지 확인 할 수 있습니다.
$ ssh -T git@github.com-me
Hi {GithubID}! You've successfully authenticated, but GitHub does not provide shell access.

ssh key를 만들 때 비밀번호를 지정하였으면 해당 비밀번호를 입력하면 됩니다.
  • 위와 같이 나온다면 정상적으로 연결이 된 것입니다.
  • git add, commit, push를 통해 정상적으로 반영이 되는지 확인하면 됩니다.

GitHub 저장소 클론

각 계정별 깃허브 저장소에서 Clone or download 버튼을 누르면, 두 가지 방식으로 클론을 할 수 있다.

앞으로는 깃허브 저장소에서 SSH를 이용해 클론을 하면 된다.

  • 기존 config 파일을 개인 계정으로 사용할 생각이었기 때문에 아래와 같이 작성한 후 테스트를 해보았습니다.

프로젝트 .git 에서 config 파일

문제점

해당 프로젝트를 개인 계정으로 commit, push 를 하고 싶어 진행하였지만,

기존에 등록되어있었던 회사 계정으로만 commit, push 가 진행되는 문제가 있었습니다.

 

해결방법

git repository 마다 계정을 다르게 사용하기 위해서 로컬 설정을 따로 해준 후 commit, push 를 하니 GitHub에 잘 올라가있는 것을 확인할 수 있었습니다.

git config --local user.name "rinikim"
git config --local user.email "tytntu@naver.com"

또한 git config —local 명령어로 회사계정을 변경한채로 commit, push 를 했을 때도 GitHub에 잘 올라가는 것을 확인했습니다.

 

 

 

 

⭐️  참고한 곳  


 

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

프로젝트를 하다보면 서로 다른 깃허브 계정으로 작업해야 할 때가 있다. 예를 들어, 회사 프로젝트는 회사 깃허브 계정으로 개인 프로젝트는 개인 깃허브 계정으로 사용하는 경우이다. SSH를 이

velog.io

 

Nathan's Blog

The blog to learn more.

monkey3199.github.io

 

 

배워야 할 것이 더 많은 주니어 개발자입니다. 🐣
내용 전달보다는 정리를 목적으로 포스팅을 하고 있습니다.
잘못 된 내용이나 부족한 부분은 댓글로 주시면 감사드리겠습니다. 

 

 

반응형