개발 공부를 하거나 회사에서 프로젝트를 진행하다 보면, 여러 개의 깃허브(GitHub) 계정을 사용해야 하는 경우가 생깁니다.
예를 들어,
회사 업무용 깃허브 계정
과
개인 프로젝트나 스터디용 깃허브 계정
을 분리해서 사용하고 싶을 때가 대표적이죠.
이런 고민을 하는 분들을 위해 오늘 이 글을 준비했습니다.
이 글에서는 윈도우 환경의 터미널(Git Bash나 WSL의 리눅스 터미널 등)에서 회사 계정과 개인 계정을 모두 설정하고, 각 프로젝트에 맞는 계정으로 손쉽게 작업하는 방법을 차근차근 알려드릴 거예요.
SSH(Secure Shell)는 네트워크를 통해 안전하게 통신하기 위한 프로토콜입니다.
깃허브와 통신할 때 SSH 키를 사용하면 매번 아이디와 비밀번호를 입력할 필요 없이 안전하게 인증할 수 있어서 매우 편리합니다.
여러 계정을 사용할 때 가장 깔끔하고 권장되는 방법이기도 합니다.
-t rsa: RSA 암호화 방식을 사용합니다. (요즘은 ed25519 방식도 많이 사용합니다: ssh-keygen -t ed25519 -C "your_email@example.com")
-b 4096: 키의 길이를 4096비트로 설정합니다. (RSA의 경우, ed25519는 불필요)
-C "...": 코멘트 부분으로, 보통 이메일 주소를 넣어 식별하기 쉽게 합니다.
-f ~/.ssh/id_rsa_work: 키 파일을 저장할 경로와 파일 이름을 지정합니다. ~는 홈 디렉토리를 의미합니다.
명령을 실행하면 다음과 같은 질문이 나옵니다.
Enter passphrase (empty for no passphrase):
SSH 키에 대한 추가 암호를 설정하는 부분입니다. 설정하면 SSH 키를 사용할 때마다 이 암호를 입력해야 해서 보안성은 높아지지만, 조금 번거로울 수 있습니다.
필요에 따라 설정하거나, 그냥 Enter를 눌러 암호 없이 진행할 수 있습니다. (여기서는 암호 없이 진행하는 것으로 가정합니다.)
Enter same passphrase again:
암호를 설정했다면 다시 한번 입력합니다.
성공적으로 생성되면 ~/.ssh/id_rsa_work (비밀키)와 ~/.ssh/id_rsa_work.pub (공개키) 파일 두 개가 만들어집니다.
ssh-keygen 성공
개인 계정용 SSH 키 생성
마찬가지로 개인 계정용 SSH 키도 생성합니다. 이번에는 파일 이름을 id_rsa_personal로 하겠습니다.
your_personal_email@example.com 부분은 실제 개인 깃허브 계정 이메일로 바꿔주세요.
이제 각 깃허브 호스트에 어떤 SSH 키를 사용해야 할지 알려주는 설정 파일을 만들어야 합니다.
SSH 설정 파일 열기 (또는 생성하기)
~/.ssh/config 파일을 텍스트 편집기로 엽니다. 파일이 없다면 새로 만들면 됩니다.
터미널에서 nano ~/.ssh/config 나 vim ~/.ssh/config를 사용하거나, 윈도우 탐색기에서 C:\Users\사용자이름\.ssh 폴더로 이동하여 config 파일을 직접 만들고 메모장 등으로 열 수 있습니다. (Git Bash에서는 notepad ~/.ssh/config도 가능)
설정 내용 추가
config 파일에 아래와 같이 내용을 추가하고 저장합니다.
# Work GitHub account
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
IdentitiesOnly yes
# Personal GitHub account
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
IdentitiesOnly yes
# (선택 사항) 기본 GitHub 계정 설정 (둘 중 하나를 기본으로 사용하고 싶을 때)
# 예를 들어 개인 계정을 기본으로 사용하고 싶다면 아래처럼 추가
# Host github.com
# HostName github.com
# User git
# IdentityFile ~/.ssh/id_rsa_personal # 또는 id_rsa (기존 기본 키가 있다면)
# IdentitiesOnly yes
설정 설명
Host github.com-work
우리가 앞으로 사용할 "별명" 같은 호스트 이름입니다. 실제 github.com과는 다른 이름을 지정하여 구분합니다.
HostName github.com
실제 연결할 깃허브 서버의 주소입니다.
User git
깃허브에 SSH로 접속할 때 사용하는 기본 사용자 이름입니다. (변경하지 마세요)
IdentityFile ~/.ssh/id_rsa_work
이 호스트(github.com-work)에 접속할 때 사용할 SSH 비밀키 파일의 경로입니다.
IdentitiesOnly yes
지정된 IdentityFile만 사용하여 인증을 시도하도록 합니다. (다른 키들을 순차적으로 시도하지 않도록 하여 명확성을 높입니다.)
각 키에 암호를 설정했다면, 여기서 암호를 입력하라는 메시지가 나옵니다. 한번 입력하면 다음부터는 묻지 않습니다. (터미널 세션이 유지되는 동안)
윈도우를 재부팅하면 SSH Agent도 다시 시작해야 하고 키도 다시 추가해야 할 수 있습니다.
이를 자동화하는 방법도 있지만, 이 글에서는 기본적인 내용만 다룹니다.
이제 모든 설정이 끝났습니다! 각 계정에 맞는 저장소를 클론(clone)하거나, 기존 저장소의 원격(remote) URL을 변경하여 사용할 수 있습니다.
클론을 할 때에는 기본적으로 SSH URL을 사용합니다.
SSH url
회사 저장소를 클론할 때
원래 git clone git@github.com:회사계정명/저장소명.git 대신, config 파일에서 설정한 Host 이름(github.com-work)을 사용합니다.
git clone git@github.com-work:회사계정명/저장소명.git
개인 저장소를 클론할 때
마찬가지로 Host 이름(github.com-personal)을 사용합니다.
git clone git@github.com-personal:개인계정명/저장소명.git
기존 로컬 저장소의 원격 URL 변경
이미 HTTPS 방식으로 클론했거나, 다른 계정의 SSH URL로 설정된 로컬 저장소가 있다면, 원격 URL을 수정해야 합니다.
해당 로컬 저장소 디렉토리로 이동한 후, 다음 명령어를 사용합니다.
예를 들어, 회사 저장소의 원격 URL을 github.com-work를 사용하도록 변경하려면:
# 현재 설정된 원격 URL 확인git remote -v# origin git@github.com:회사계정명/저장소명.git (fetch)# origin git@github.com:회사계정명/저장소명.git (push)# 원격 URL 변경 (origin이라는 이름의 원격을 변경)git remote set-url origin git@github.com-work:회사계정명/저장소명.git
이제 이 저장소에서 git push, git pull 등의 명령을 실행하면 id_rsa_work 키를 사용하여 github.com-work 호스트로 통신하게 됩니다.
이 SSH 설정 방법은 한번 해두면 매우 편리하고 안전하게 여러 계정을 관리할 수 있습니다.
윈도우에서 Git을 설치하면 보통 Git Credential Manager for Windows(GCM)가 함께 설치됩니다.
이는 깃허브 같은 서비스에 HTTPS로 처음 로그인할 때 사용자 이름과 비밀번호(또는 PAT)를 저장해두고, 다음번 접속부터는 자동으로 인증해주는 역할을 합니다.
문제는 GCM이 기본적으로
하나의 github.com 호스트에 대해 하나의 자격 증명만 저장
한다는 점입니다.
그래서 회사 계정으로 로그인해두면 개인 계정 저장소에 접근하려 할 때 회사 계정으로 시도하게 되고, 반대의 경우도 마찬가지입니다.
기존 자격 증명 삭제
다른 계정을 사용해야 할 때, 윈도우 '자격 증명 관리자'에서 기존 github.com 관련 자격 증명을 수동으로 삭제해야 합니다.
윈도우 검색창에 '자격 증명 관리자'를 입력하여 실행합니다.
'Windows 자격 증명'을 선택합니다.
'일반 자격 증명' 목록에서 git:https://github.com 와 유사한 항목을 찾습니다.
해당 항목을 확장하고 '제거'를 클릭합니다.
자격 증명 삭제
새로운 계정으로 인증
자격 증명을 삭제한 후, 터미널에서 새로운 계정(예: 개인 계정)으로 접근해야 하는 저장소에 대해 git pull이나 git push 같은 명령을 실행합니다.
그러면 GCM이 사용자 이름과 비밀번호(또는 PAT)를 묻는 창을 띄웁니다. 여기에 새로운 계정 정보를 입력하면, 이 정보가 다시 자격 증명 관리자에 저장됩니다.
이 방법은 계정을 바꿀 때마다 자격 증명을 수동으로 삭제해야 해서 번거롭습니다.
그래서 HTTPS 방식에서는 각 계정별로
PAT는 비밀번호 대신 사용할 수 있는 토큰으로, 각 토큰마다 특정 권한(scope)을 부여할 수 있어 보안에 더 좋습니다.
각 깃허브 계정(회사용, 개인용)에서 필요한 권한을 가진 PAT를 발급받습니다.
회사 계정용 PAT 발급
개인 계정용 PAT 발급
PAT를 발급받는 방법은 깃허브 Settings > Developer settings > Personal access tokens > Tokens (classic) 또는 Fine-grained tokens 에서 할 수 있습니다.
(Fine-grained tokens가 더 세밀한 권한 설정이 가능하여 권장됩니다.)
HTTPS URL로 Git 작업을 할 때, 비밀번호를 묻는 프롬프트가 나타나면 비밀번호 대신 발급받은 PAT를 입력합니다.
GCM은 이 PAT를 저장해두고 다음번 접속 시 사용합니다.
여전히 GCM은 하나의 github.com에 대해 하나의 PAT만 기억하므로, 계정을 전환하려면 위에서 설명한 자격 증명 삭제 과정을 거쳐야 합니다.
절대 공개된 곳에 공유하거나 커밋하지 마세요.
특히 SSH 비밀키(id_rsa_work, id_rsa_personal) 파일은 매우 중요하게 관리해야 합니다.
.gitconfig 파일 확인
Git 설정은 홈 디렉토리의 .gitconfig 파일(전역 설정)과 각 프로젝트의 .git/config 파일(로컬 설정)에 저장됩니다.
이 파일들을 직접 열어보면 설정을 이해하는 데 도움이 됩니다.
WSL 사용 시
WSL 내의 리눅스 환경에서는 SSH 키나 Git 설정을 WSL의 홈 디렉토리(~/.ssh, ~/.gitconfig) 기준으로 관리합니다.
윈도우의 Git Bash와는 별개의 환경이므로 각각 설정해주어야 할 수 있습니다. 다만, WSL에서 윈도우 쪽 SSH 키를 공유하여 사용하는 방법도 있습니다.
IDE 연동
VS Code 같은 IDE들은 자체적으로 Git 기능을 내장하고 있으며, 여러 계정 관리를 더 쉽게 해주는 확장 기능을 제공하기도 합니다.
혼동 방지
현재 어떤 계정으로 작업하고 있는지, 어떤 사용자 정보로 커밋하고 있는지 항상 명확히 인지하는 것이 중요합니다.
터미널 프롬프트를 커스터마이징하여 현재 Git 브랜치나 사용자 정보를 표시하는 것도 좋은 방법입니다.