개발자라면 여러 GitHub 계정을 사용해야 할 때가 종종 있습니다. 개인 프로젝트를 위한 계정과 회사 업무를 위한 계정을 따로 관리하거나, 오픈소스 기여를 위한 또 다른 계정이 있을 수도 있죠. 하지만 Windows 환경에서 여러 GitHub 계정을 오가는 것은 생각보다 번거롭게 느껴질 수 있습니다. 매번 git config 명령어를 수정하거나 SSH 키를 바꿔주는 것도 여간 귀찮은 일이 아니죠.
오늘은 Windows에서 Git Bash와 Command Prompt (CMD)를 이용해 여러 GitHub 계정을 쉽고 효율적으로 관리하는 방법을 자세히 알아보겠습니다. 계정 등록 과정부터 실제 사용 테스트, 그리고 발생할 수 있는 일반적인 오류 해결 방법까지 함께 살펴보겠습니다.
1단계: SSH 키 생성 및 등록
GitHub는 SSH(Secure Shell)를 이용한 안전한 통신을 권장합니다. 각 GitHub 계정마다 고유한 SSH 키를 생성하고 등록하면, 비밀번호를 매번 입력할 필요 없이 편리하게 인증할 수 있습니다.
1-1. SSH 폴더 생성
SSH 키는 일반적으로 사용자 홈 디렉토리(~) 아래의 .ssh 폴더에 저장됩니다. 이 폴더가 없다면, Git Bash를 열어 다음 명령어로 생성해 주세요.
Bash
mkdir -p ~/.ssh
-p 옵션은 부모 디렉토리가 없으면 함께 생성해 주며, 이미 폴더가 존재해도 오류를 발생시키지 않습니다.
(이미지: Git Bash에서 mkdir -p ~/.ssh 명령어를 실행하여 SSH 설정 파일을 위한 디렉토리를 생성하는 화면을 보여줍니다.)
1-2. SSH 키 생성
가장 먼저 할 일은 각 GitHub 계정별로 SSH 키를 생성하는 것입니다. Git Bash를 열고 다음 명령어를 입력하세요.
-C "your_email@google.com": 주석을 추가합니다. 해당 SSH 키가 어떤 계정의 것인지 구분하는 데 도움이 됩니다.
-f ~/.ssh/id_rsa_yourgoogleaccountname: 키 파일이 저장될 경로와 파일명을 지정합니다. 반드시 계정별로 다른 파일명을 사용해야 합니다. (예: id_rsa_google, id_rsa_yourgoogleaccountname, id_rsa_apple)
명령어를 실행하면 암호(passphrase)를 입력하라는 메시지가 나옵니다. 보안을 위해 입력하는 것을 권장하지만, 매번 입력하기 번거롭다면 비워둬도 무방합니다. (엔터 두 번)
위 화면은 Git Bash에서 ssh-keygen 명령어를 실행하여 SSH 키를 생성하는 화면. 파일 경로와 이메일 주소를 입력하고 암호를 설정하는 과정을 보여줍니다.
이 과정을 거치면 아래와 같이 파일이 생성됩니다.
이 과정을 각 GitHub 계정마다 반복하여 필요한 만큼의 SSH 키를 생성합니다. 예를 들어, 개인 계정과 회사 계정을 사용한다면 id_rsa_personal과 id_rsa_work 두 개의 키 파일을 생성해야 합니다.
1-3. Windows SSH-Agent 서비스 확인 (선택 사항)
Git Bash에서 SSH Agent를 사용하는 대신, Windows 자체의 SSH-Agent 서비스를 사용할 수도 있습니다. 일반적으로 Git Bash에서 ssh-agent 명령어를 실행하여 Agent를 시작하는 것이 더 유연하지만, 간혹 시스템 전반적으로 이 서비스를 사용하고 있다면 충돌을 피하기 위해 확인해 볼 필요가 있습니다.
Running 상태이고 StartType이 **Automatic**으로 되어 있다면, Windows 서비스로 SSH 에이전트가 활성화되어 있는 것입니다. 이 경우, Git Bash에서 eval "$(ssh-agent -s)" 명령어를 실행하면 충돌이 발생하거나 예상치 못한 동작을 할 수 있습니다. 이 가이드에서는 Git Bash의 SSH 에이전트(eval "$(ssh-agent -s)")를 사용하는 것을 전제로 하므로, Windows ssh-agent 서비스가 실행 중이라면 잠시 중지하거나 Disabled로 설정하는 것을 고려해 보세요. (나중에 다시 Automatic으로 변경 가능합니다.)
서비스 중지: Stop-Service ssh-agent (PowerShell) 또는 net stop ssh-agent (CMD)
시작 유형 비활성화: Set-Service -Name ssh-agent -StartupType Disabled (PowerShell)
Stopped 상태이거나 아예 보이지 않는다면, Git Bash의 SSH 에이전트를 사용해도 무방합니다.
대부분의 경우 Git Bash에서 SSH 에이전트를 직접 실행하는 것이 편리합니다. 이 가이드도 Git Bash 에이전트 사용을 기준으로 설명합니다.
1-4. SSH 에이전트 설정
SSH 에이전트는 SSH 키를 메모리에 로드하여 사용할 때마다 암호를 입력할 필요 없이 자동으로 인증해 주는 역할을 합니다.
SSH 에이전트 시작
Bash
eval "$(ssh-agent -s)"
생성한 SSH 키 추가
Bash
ssh-add ~/.ssh/id_rsa_woogongTest
ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_work
# 필요한 만큼 각 계정의 키 파일 경로를 추가합니다.
1-5. SSH 설정 파일 (config) 생성 및 편집
~/.ssh 디렉토리에 config 파일을 생성하여 각 GitHub 계정에 대한 설정을 정의합니다. 이 파일은 Git이 어떤 호스트에 어떤 SSH 키를 사용할지 알려주는 역할을 합니다.
Bash
# ~/.ssh/config 파일 생성 또는 편집
Host github.com-woogongTest
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_woogongTest
IdentitiesOnly yes
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
IdentitiesOnly yes
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
IdentitiesOnly yes
Host: Git이 사용할 별칭입니다. 실제 github.com 대신 이 별칭을 사용하여 계정을 구분합니다. 이 별칭이 가장 중요합니다! (예: github.com-personal, github.com-work, github.com-work)
HostName: 실제 GitHub 호스트 이름 (github.com)입니다.
User: Git 사용자입니다. 항상 git으로 설정합니다.
IdentityFile: 해당 Host에 사용할 SSH 키 파일의 경로입니다.
IdentitiesOnly yes: 이 호스트에 대해 지정된 IdentityFile만 사용하도록 강제합니다.
1-6. GitHub에 SSH 공개 키 등록
이제 생성된 SSH 공개 키(.pub 확장자 파일)를 각 GitHub 계정에 등록해야 합니다.
GitHub 웹사이트에 로그인합니다.
Settings > SSH and GPG keys로 이동합니다.
New SSH key 버튼을 클릭합니다.
Title에 키의 이름을 지정합니다 (예: My Personal Laptop 또는 Work PC).
Key 필드에 .pub 파일의 내용을 복사하여 붙여넣습니다. .pub 파일은 텍스트 편집기(메모장, VS Code 등)로 열 수 있습니다. (예: ~/.ssh/id_rsa_woogongTest.pub 파일 내용)
Bash
cat ~/.ssh/id_rsa_woogongTest.pub
Tip : 오류가 날수 있기 때문에 git bash 에서 입력하여 맨 마지막줄까지 Copy 하십시오.
Add SSH key를 클릭합니다.
이 과정을 각 GitHub 계정마다 반복하여 해당 계정의 공개 키를 등록합니다.
2단계: Git 저장소 클론 및 계정 설정
이제 각 GitHub 계정에 맞는 원격 저장소를 클론하고, 해당 저장소에 맞는 사용자 정보를 설정할 차례입니다.
2-1. 저장소 클론 (Clone)
기존 저장소를 클론할 때는 앞서 config 파일에서 설정한 별칭을 사용합니다.
Bash
# 개인 계정의 저장소 클론
git clone git@github.com-personal:your-username/your-personal-repo.git
# 회사 계정의 저장소 클론
git clone git@github.com-work:your-company-username/your-work-repo.git
중요: 여기서 github.com-personal 또는 github.com-work는 실제 GitHub 도메인이 아닌, ~/.ssh/config 파일에 설정한 Host 별칭입니다. Git은 이 별칭을 보고 해당 별칭에 연결된 SSH 키를 사용하게 됩니다.
2-2. 로컬 Git 설정 (Local Git Config)
각 클론한 저장소 디렉토리로 이동한 후, 해당 저장소에 맞는 사용자 이름과 이메일 주소를 설정해야 합니다. 이는 현재 저장소에만 적용되는 설정이므로, 다른 저장소에는 영향을 주지 않습니다.
Bash
cd your-personal-repo
git config user.name "Your Personal Name"
git config user.email "your_personal_email@example.com"
cd ../your-work-repo
git config user.name "Your Work Name"
git config user.email "your_work_email@example.com"
cd woogongTest-repo
git config user.name "WooGongTest"
git config user.email "woogongTest@google.com"
이제 이 저장소에서 커밋을 하면, 설정된 사용자 이름과 이메일 주소로 기록됩니다.
3단계: 테스트 및 오류 해결
이제 모든 설정이 완료되었으니, 실제로 잘 작동하는지 테스트해 볼 차례입니다.
3-1. SSH 연결 테스트
Git Bash 또는 CMD에서 다음 명령어를 사용하여 SSH 연결을 테스트할 수 있습니다.