Engineering note · Git

Git 다중 계정 환경에서 SSH 인증과 커밋 작성자 관리하기

2026년 01월 18일이현수
태그gitgithubsshtermuxandroid

한 PC와 Android Termux에서 여러 GitHub 계정을 안전하게 구분하는 SSH 설정, 저장소별 커밋 작성자 설정, 이미 섞인 과거 커밋 이력 정리 방법을 정리한다.

계정을 두개 섞어서 쓰면서 설정한 것들 정리.

계정마다 SSH 키를 만들고 Host 별칭을 분리하기

각 GitHub 계정에는 서로 다른 SSH 공개키를 등록한다. 기존 키를 덮어쓰지 않도록 파일명을 명시해 ed25519 키를 만든다.

sh
ssh-keygen -t ed25519 -C "personal@example.com" -f ~/.ssh/id_ed25519_github_personal
ssh-keygen -t ed25519 -C "work@example.com" -f ~/.ssh/id_ed25519_github_work

개인·회사 GitHub 계정의 SSH 키 설정 화면

생성한 .pub 파일의 내용을 각 계정의 GitHub SSH keys 화면에 등록한다. 이후 ~/.ssh/config에서 GitHub 주소에 별칭을 주고, 별칭마다 사용할 키를 지정한다. 개인용이랑 회사용으로 나눴다.

text
# 개인 계정
Host github-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github_personal
  IdentitiesOnly yes

# 회사 계정
Host github-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github_work
  IdentitiesOnly yes

IdentitiesOnly yes를 넣으면 SSH 에이전트에 여러 키가 등록돼 있어도 이 Host에 지정한 키만 사용한다. 저장소를 처음 복제하거나 기존 원격 주소를 바꿀 때는 실제 도메인 대신 별칭을 사용한다.

sh
git clone git@github-personal:personal-account/sample-repository.git

cd sample-repository
git remote set-url origin git@github-personal:personal-account/sample-repository.git

클론할 때 URL 앞에 별칭을 넣어주면 된다. 별칭별 인증 결과는 아래처럼 확인한다. 성공 메시지에 표시되는 사용자명이 기대한 계정인지 확인해야 한다.

sh
ssh -T git@github-personal
ssh -T git@github-work

GitHub SSH 테스트 명령은 성공하더라도 원격 셸을 제공하지 않기 때문에 종료 코드가 1일 수 있다. 메시지에 인증된 사용자명이 나타나는지를 기준으로 확인한다.

원격 인증과 커밋 작성자는 별도로 고정하기

SSH 키는 push 권한을 확인하지만, 커밋의 작성자 정보는 Git 설정에서 읽는다. 전역 설정은 기본값으로만 두고, 계정을 구분해야 하는 레포에서는 로컬 설정을 명시하는 것이 안전하다.

sh
# 현재 레포에서 사용할 커밋 정보
git config user.name "Personal Name"
git config user.email "personal@example.com"

# 적용된 작성자와 원격 주소를 함께 확인한다.
git config --get user.name
git config --get user.email
git remote get-url origin

GitHub 계정에 연결된 이메일이나 GitHub가 제공하는 noreply 이메일을 사용해야 커밋이 해당 계정에 정상적으로 연결된다. 이메일 공개를 피해야 한다면 GitHub의 이메일 개인정보 보호 설정과 noreply 주소를 먼저 확인한다.

새 저장소를 만들 때마다 설정을 반복하기 싫다면 디렉터리별 조건부 설정도 가능하다. 예를 들어 개인 프로젝트를 ~/Projects/personal/ 아래에 모아 둔 경우 전역 설정 파일에 다음을 추가한다.

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

그리고 ~/.gitconfig-personal에는 개인 계정의 user.name, user.email을 둔다. 단, 원격 URL의 SSH Host 별칭은 저장소마다 따로 확인해야 한다.

Android Termux에서도 같은 방식으로 인증하기

Android에서 Git 작업을 할 때도 원칙은 같다. Termux 로 터미널을 사용할 수 있다. 노트북 구매 전, 갤탭으로 접근할 때 이 방법을 사용했다! 그런데 결국 노트북을 사긴 함...

Git과 OpenSSH를 설치하고, 모바일 단말에서 별도의 키를 만들어 해당 GitHub 계정에 등록한다. PC의 개인키를 단말로 복사하지 않는 편이 노출 범위를 줄이는 데 유리하다.

sh
pkg update
pkg install git openssh

ssh-keygen -t ed25519 -C "mobile@example.com" -f ~/.ssh/id_ed25519_github_mobile
cat ~/.ssh/id_ed25519_github_mobile.pub

출력한 공개키를 GitHub에 등록한 뒤 ~/.ssh/config를 만든다. PC와 달리 키 파일명만 모바일용으로 바꾸면 된다.

text
Host github-mobile
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github_mobile
  IdentitiesOnly yes

저장소는 git@github-mobile:account/repository.git 형태로 복제하고, ssh -T git@github-mobile로 계정을 확인한다. 공유 저장소에서 파일을 다뤄야 할 때만 termux-setup-storage를 실행해 Android 저장 공간 접근 권한을 부여한다. SSH 개인키와 Git 설정 파일은 기본 홈 디렉터리에 두고 공유 저장 공간에는 두지 않는 편이 좋다.

이미 섞인 커밋 작성자 이력은 별도의 작업으로 정리하기

git config를 바꿔도 이후 커밋에만 적용된다. 과거 커밋의 작성자와 커밋터 정보를 고쳐야 한다면 커밋 해시가 전부 바뀌기 때문에 주의해야한다. 개인 레포이기 때문에 적용한 것이다. vercel 의 hobby 플랜을 사용중인데, 커밋 계정이 섞여 있다면 pro 플랜을 사용해야하기 때문에 해야했다.

sh
git filter-repo --mailmap ../author-mailmap

git-filter-repo는 author뿐 아니라 committer와 tagger의 이름·이메일도 mailmap 기준으로 재작성할 수 있다. 실행 뒤에는 git log --all --format='%an <%ae> | %cn <%ce>' | sort -u로 결과를 다시 검증하고, 원격 주소와 브랜치 보호 규칙을 확인한다.

sh
git remote add origin git@github-personal:personal-account/sample-repository.git
git push --force --all origin
git push --force --tags origin

이 작업을 현업에서는 사용할 일이 없고, 사용하지 말아야 하니 주의!

참고한 페이지

좋아요와 댓글

댓글 남기기

댓글 0개

댓글을 불러오는 중입니다.