[GitHub] 여러 GitHub 계정을 하나의 머신에서 사용하기

2024-10-05 hit count image

하나의 머신(PC)에서 여러 개의 GitHub 계정을 설정해서 사용하는 방법에 대해 알아봅시다.

개요

하나의 머신(PC)에서 회사의 GitHub 계정과 개인 GitHub 계정을 모두 사용하고 싶은 경우가 있습니다. 이번 블로그 포스트에서는 여러 개의 GitHub 계정을 하나의 머신에서 설정하여 사용하는 방법에 대해서 알아보겠습니다.

SSH 키 생성

여러 개의 GitHub 계정을 사용하기 위해서는 SSH 키를 생성해야 합니다. 제가 macOS를 사용하고 있기 때문에 macOS를 기준으로 설명하겠습니다.

먼저, .ssh 디렉토리로 이동합니다.

cd ~/.ssh

그 다음, ssh-keygen 명령어를 사용하여 SSH 키를 생성합니다. 우선 개인 계정을 위한 SSH 키를 생성합니다.

ssh-keygen -t rsa -b 4096 -C "GITHUB_PERSONAL_ACCOUNT_EMAIL"

그럼 다음과 같이 어떤 이름으로 키를 저장할지 물어보게 됩니다.

Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):

저는 구별하기 쉽게 하기 위해 id_rsa_personal이라는 이름으로 저장하였습니다. 그런 다음, 회사 계정을 위한 SSH 키를 생성합니다.

ssh-keygen -t rsa -b 4096 -C "GITHUB_COMPANY_ACCOUNT_EMAIL"

역시 어떤 이름으로 키를 저장할지 물어보게 됩니다.

Enter file in which to save the key (/Users/user_name/.ssh/id_rsa):

저는 구별하기 쉽게 하기 위해 id_rsa_work이라는 이름으로 저장하였습니다.

GitHub에 SSH 키 등록

생성한 SSH키를 GitHub에 등록해야 합니다. 우선 개인 계정에 SSH 키를 등록해 봅시다.

다음 명령어를 실행하면 SSH키를 확인할 수 있습니다.

cat ~/.ssh/id_rsa_personal.pub

표시된 SSH 키를 복사한 다음, GitHub 웹사이트에서 Settings -> SSH and GPG keys -> New SSH key를 클릭하여 SSH 키를 등록합니다. 이때, GitHub 웹 사이트에는 개인 계정으로 로그인이 되어 있어야 합니다.

Use multiple GitHub users in local machine: Register new SSH key

이와 동일한 방법으로 회사 계정에 SSH 키를 복사하여 GitHub 웹사이트에 등록합니다. 이때, GitHub 웹 사이트에는 회사 계정으로 로그인이 되어 있어야 합니다.

config 설정

이렇게 설정한 SSH 키를 사용하여 GitHub의 계정을 구분하기 위해 ~/.ssh/config 파일을 다음과 같이 수정합니다.

# personal

Host personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal

# work

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work

그리고 터미널에서 다음 명령어를 실행하여 SSH 키가 잘 등록되었는지 확인합니다.

ssh -T git@personal

다음과 같은 메시지가 나오면 성공적으로 등록된 것입니다.

Hi GITHUB_PERSONAL_ACCOUNT! You've successfully authenticated, but GitHub does not provide shell access.

마찬가지로 회사 계정에 대해서도 다음 명령어를 실행하여 SSH 키가 잘 등록되었는지 확인합니다.

역시 다음과 같은 메시지가 나오면 성공적으로 등록된 것입니다.

Hi GITHUB_COMPANY_ACCOUNT! You've successfully authenticated, but GitHub does not provide shell access.

클론(clone)

이제 GitHub에서 프로젝트를 클론(Clone)할 때, 다음과 같이 개인 계정과 회사 계정을 구분하여 사용할 수 있습니다.

# Personal account
git clone git@personal:GITHUB_PERSONAL_ACCOUNT/REPOSITORY.git
# Company account
git clone [email protected]:GITHUB_COMPANY_ACCOUNT/REPOSITORY.git

Git 사용자 설정

다음 명령어를 실행하면, Git에 설정된 user.nameuser.email을 확인할 수 있습니다.

# Check user name
git config user.name
# Check user email
git config user.email

GitGlobal 설정에 사용자 정보를 등록하지 않았다면 명령어를 실행했을 때, 아무것도 나오지 않을 것입니다.

.gitconfig 파일을 수정하여 Global 사용자를 설정하고, 특정 폴더에서 사용할 사용자를 설정할 수 있습니다.

우선 ~/.gitconfig-work 파일과 ~/.gitconfig-personal 파일을 생성하고, 다음과 같이 수정합니다.

  • ~/.gitconfig-work
# code ~/.gitconfig-work
[user]
	name = "GITHUB_COMPANY_ACCOUNT_USER_NAME"
	email = GITHUB_COMPANY_ACCOUNT_EMAIL
  • ~/.gitconfig-personal
# code ~/.gitconfig-personal
[user]
    name = "GITHUB_PERSONAL_ACCOUNT_USER_NAME"
    email = GITHUB_PERSONAL_ACCOUNT_EMAIL

그런 다음 .gitconfig 파일을 다음과 같이 수정합니다.

# code ~/.gitconfig

# This is for Global settings
[user]
	name = "GITHUB_COMPANY_ACCOUNT_USER_NAME"
	email = GITHUB_COMPANY_ACCOUNT_EMAIL
# For company account
[includeIf "gitdir:~/WORK/"]
    path = ~/.gitconfig-work
# For personal account
[includeIf "gitdir:~/PERSONAL/"]
    path = ~/.gitconfig-personal

이 설정은 GitGlobal 사용자로 회사 계정을 설정하였습니다. WORK 폴더에서는 회사 계정을 사용하도록 하고, PERSONAL 폴더에서는 개인 계정을 사용하도록 설정하였습니다.

잘 설정이 되었는지 확인하기 위해 PERSONAL 폴더로 이동합니다. 그런 다음 다음 명령러를 실행하여 사용자 정보를 확인합니다.

cd ~/PERSONAL
git config user.name
git config user.email

그럼 다음과 같이 GitGlobal 사용자 정보가 나오게 됩니다.

# git config user.name
GITHUB_COMPANY_ACCOUNT_USER_NAME
# git config user.email
GITHUB_COMPANY_ACCOUNT_EMAIL

이는 현재 폴더(PERSONAL)의 Git 프로젝트가 존재하지 않기 때문에, 단순히 GitGlobal 사용자 정보가 표시되는 것입니다.

그럼 다음과 같이 실제 Git 프로젝트를 생성하고 Git의 사용자 정보를 확인해 봅시다.

mkdir ~/PERSONAL/temp
cd ~/PERSONAL/temp
git init
git config user.name
git config user.email

그럼 다음과 같이 Git의 개인 계정 사용자 정보가 나오게 됩니다.

GITHUB_PERSONAL_ACCOUNT_USER_NAME
GITHUB_COMPANY_ACCOUNT_EMAIL

이는 앞서 우리가 .gitconfig에 설정한 내용이 반영된 것입니다.

[includeIf "gitdir:~/PERSONAL/"]
    path = ~/.gitconfig-personal

완료

이것으로 하나의 머신에서 여러 개의 GitHub 계정을 사용하는 방법에 대해 알아보았습니다. 이제 여러 개의 GitHub 계정을 사용하면서 불편함없이 프로젝트를 관리할 수 있게 되었습니다.

또한 .gitconfig를 사용하여 특정 폴더에서 사용할 사용자를 설정하는 방법에 대해서도 알아보았습니다. 이를 통해 Git의 사용자 정보를 편리하게 변경할 수 있게 되었습니다.

여러분도 여러 GitHub 계정을 사용해야하는 상황이라면 이 블로그 포스트를 참고하여 여러 개의 GitHub 계정을 설정하여 사용해보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts