Git 프로젝트마다 다른 ssh키, user.name 사용하기

Alfred·2025년 3월 28일
post-thumbnail

GitHub 다중 계정을 사용할 때 다른 계정에서 이미 등록한 ssh키를 또 등록할 수 없어 2개 이상의 ssh key를 사용해야하는 경우가 있다. 혹은 의도적으로 프로젝트마다 다른 키를 사용해야하는 상황도 있다.

간단한 .ssh/config 설정만으로 할 수 있는데 방법을 정리해본다.

현재 상황

기존의 키가 아래와 같이 있다고 가정한다.

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

Or 요즘에는 기본적으로 아래 파일명으로 생성됨:

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

그럼 아래와 같은 SSH URL로 클론을 시도할 때 아무런 설정이 없다면 위 키를 사용하여 인증을 한다.

git clone git@github.com:org1/project1.git

문제는 아래와 같이 다른 GitHub 계정이 권한을 가진 다른 프로젝트를 clone 할 때도 계속 기본 키를 사용 시도해서 클론이 안된다.

git clone git@github.com:org2/project2.git

.ssh/config에 설정 추가

secondgithub 이라는 이름으로 Host 설정을 추가하자.

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

secondgithub을 원하는 이름으로 변경해도되며, 짧으면 타이핑하기 좋다.

IdentityFile 에는 secondgithub 에서 사용하는 키 경로를 입력한다. 키가 없다면 아래의 명령어로 새로 만들어도 된다.

cd ~/.ssh
ssh-keygen -f secondgithub

키를 아직 secondgithub 쪽에 등록 안했다면 키 등록 페이지에서 .pub 파일 내용을 등록 한다.

사용하기

설정은 끝났다. secondgithub키를 사용하고 싶은 Git 프로젝트에서는 원격 저장소 이름의 git@github.com: 부분을 .ssh/config 에 추가한 host로 변경해주면 된다.

기본 키 사용 할 때:

git clone git@github.com:org1/project1.git

secondgithub 키 사용 할 때:

git clone secondgithub:org2/project2.git

이미 클론을 해서 사용하고 있는 경우:

remote url을 변경해주면 된다. origin이라는 이름으로 사용하고 있을 때,

git remote set-url origin secondgithub:org2/project2.git

플젝별로 user.name, user.email 적용하기

전역 gitconfig 설정 파일을 적당한 이름으로 추가하자. 글에서는 ~/.gitconfig-secondgithub 로 추가한 것으로 가정.

[user]
  # 두번째 계정 이름, 이메일 
  name = MySecondName
  email = my-second-email@example.com

그리고 기본 전역 gitconfig 설정 파일인 ~/.gitconfig 파일에 remote 저장소 주소를 보고 위에 설정 파일을 사용하는 설정을 추가한다.

[user]
  # 기본 이름, 이메일
  name = Alfred
  email = b6pzeusbc54tvhw5jgpyw8pwz2x6gs@gmail.com

[includeIf "hasconfig:remote.*.url:secondgithub:*/**"]
  path = .gitconfig-secondgithub
profile
취미로 웹 서비스를 개발하며 생산성을 높여주는 도구와 문화, 스킬에 관심이 많습니다. https://www.youtube.com/c/ACupofCommit

0개의 댓글