이 방법은 각 계정마다 다른 SSH 키를 만들어서, 어떤 저장소(repository)에 접근할 때 어떤 키를 사용할지 설정해주는 방식이야.
터미널이나 Git Bash를 열고 각 계정의 SSH 키를 만들어줘.
키 이름은 구분하기 쉽게 지으면 좋아. 예를 들어 id_rsa_personal, id_rsa_work 이런 식으로!
ssh-keygen -t rsa -C "개인 계정 이메일" -f ~/.ssh/id_rsa_personal
ssh-keygen -t rsa -C "회사 계정 이메일" -f ~/.ssh/id_rsa_work
키 생성할 때 비밀번호(passphrase) 설정할 수 있는데, 이건 선택 사항이야.
설정하면 보안은 좋지만, 사용할 때마다 비밀번호를 입력해야 해.
SSH 에이전트를 실행하고 만든 키들을 추가해줘. 이렇게 해두면 매번 비밀번호를 입력하지 않아도 돼.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_work
GitHub/GitLab 등에 SSH 키 등록:
각 계정의 GitHub나 GitLab 설정에 들어가서 방금 만든 공개 키(.pub 파일) 내용을 복사해서 등록해줘.
~/.ssh/id_rsa_personal.pub 파일 내용을 개인 계정에,
~/.ssh/id_rsa_work.pub 파일 내용을 회사 계정에 등록하면 돼.
~/.ssh 폴더에 config 파일을 만들거나 열어서 아래 내용을 추가해줘. (만약 파일이 없으면 새로 만들면 돼!)
이 설정은 특정 호스트(예: github.com)에 접근할 때 어떤 키를 사용할지 Git에게 알려주는 역할을 해.
// config
# 개인 계정 설정
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
PreferredAuthentications publickey
# 회사 계정 설정
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
PreferredAuthentications publickey
여기서 Host github.com-personal이나 Host github.com-work는 네가 임의로 정하는 별칭이야. 실제 GitHub 주소는 HostName에 쓰는 github.com이지.
이제 저장소를 클론할 때 SSH 주소를 사용하는데, 아까 config 파일에 설정한 별칭을 써야 해.
개인 계정 저장소: git clone git@github.com-personal:개인계정아이디/저장소이름.git
회사 계정 저장소: git clone git@github.com-work:회사계정아이디/저장소이름.git
만약 이미 클론해둔 저장소라면 .git/config 파일을 열어서 [remote "origin"] 섹션의 url을 위 형식으로 수정해주면 돼.
이렇게 설정하면 VS Code에서 해당 저장소를 열고 Git 작업을 할 때, 자동으로 설정된 SSH 키를 사용해서 각 계정으로 커밋하고 푸시할 수 있어!
자, 아까 SSH 키 만들고, GitHub에 등록하고, ~/.ssh/config 파일까지 다 설정했다고 가정하자! 이제 VS Code에서 이걸 어떻게 활용하는지 보자!
핵심은 각 저장소(Repository)의 원격(Remote) 주소를 설정할 때,
아까 config 파일에 정해둔 별칭(Host Alias)을 사용하는 것이야.
VS Code는 네가 열어둔 프로젝트 폴더 안에 있는 .git/config 파일을 읽어서 어떤 원격 주소를 사용할지 판단하고, Git 명령을 실행할 때 그 주소를 사용해.
그리고 Git은 SSH 설정 파일을 보고 해당 별칭에 맞는 SSH 키를 자동으로 찾아서 인증하는 방식이지!
예를 들어, 개인 계정의 my-awesome-project 저장소의 SSH 주소가 git@github.com:개인계정아이디/my-awesome-project.git
이렇게 생겼다고 치자.
이걸 그대로 클론하는 대신, 아까 ~/.ssh/config 파일에 설정해둔 개인 계정 별칭 (github.com-personal)을 사용해서 주소를 바꿔주는 거야.
바뀐 주소는 이렇게 되겠지? git@github.com-personal:개인계정아이디/my-awesome-project.git
이제 VS Code 터미널이나 외부 터미널에서 이 주소로 클론하면 돼!
// bash
git clone git@github.com-personal:개인계정아이디/my-awesome-project.git
이렇게 클론하면, 이 저장소의 .git/config 파일에 원격 주소가 git@github.com-personal:개인계정아이디/my-awesome-project.git 이렇게 저장돼.
해당 저장소 폴더로 이동: 터미널에서 해당 프로젝트 폴더로 이동해줘.
현재 원격 주소 확인: git remote -v 명령어로 현재 설정된 원격 주소를 확인할 수 있어.
아마 origin이라는 이름으로 HTTPS 주소나 원래 SSH 주소가 설정되어 있을 거야.
원격 주소 변경: git remote set-url 명령어를 사용해서 config 파일에 설정한 별칭을 포함한 새 SSH 주소로 바꿔줘.
예를 들어, origin이라는 이름의 원격 주소를 회사 계정으로 바꾸고 싶다면:
//bash
git remote set-url origin git@github.com-work:회사계정아이디/저장소이름.git
만약 원격 주소가 여러 개라면 (origin 말고 다른 이름도 있다면) 바꿔주고 싶은 원격 이름으로 origin 대신 써주면 돼.
이렇게 하면 이 저장소의 .git/config 파일에 원격 주소가 업데이트돼.
VS Code의 소스 제어(Source Control) 탭에서 평소처럼 작업하면 돼. 파일을 수정하고, 스테이징하고, 커밋하고...
그리고 푸시(Push)나 풀(Pull)을 할 때, VS Code는 자동으로 해당 저장소의 .git/config 파일에 설정된 원격 주소를 사용해.
이 원격 주소가 아까 우리가 github.com-personal이나 github.com-work 같은 별칭으로 설정해둔 주소잖아?
Git은 이 별칭을 보고 ~/.ssh/config 파일을 확인해서, 해당 별칭에 연결된 IdentityFile (SSH 키 파일)을 찾아서 사용하게 돼!
따라서 네가 별도로 계정을 선택하거나 로그인할 필요 없이, 어떤 저장소를 열었는지에 따라 자동으로 해당 저장소에 연결된 계정으로 Git 작업이 이루어지는 거야! ✨
4. 현재 사용 중인 계정 확인하기
혹시 이 저장소가 어떤 계정으로 설정되어 있는지 헷갈릴 때는 다음 방법으로 확인할 수 있어.
터미널에서 확인: 해당 저장소 폴더에서 git config user.email 명령어를 실행하면 돼. 이 명령어는 해당 저장소의 로컬 Git 설정에 저장된 이메일을 보여줘. 보통 SSH 키 설정과 함께 로컬 .git/config 파일에 user.email과 user.name도 해당 계정 정보로 설정해두는 경우가 많거든.
.git/config 파일 직접 확인: 프로젝트 폴더 안에 숨겨진 .git 폴더가 있어. 그 안에 config 파일을 텍스트 에디터로 열어보면 [remote "origin"] 섹션에 설정된 url을 직접 확인할 수 있지. 이 URL에 네가 설정한 별칭(github.com-personal 또는 github.com-work)이 들어있는지 보면 돼!
이렇게 SSH 설정을 해두면 VS Code에서 여러 프로젝트를 열어두고 작업할 때, 각 프로젝트가 알아서 정해진 계정으로 Git 작업을 처리하니까 엄청 편해질 거야! 😊