LainyZine: 프로그래머 가이드 🐣

개발 환경에서 사용중인 GitHub 계정 변경하는 방법

어떤 이유로 GitHub 계정을 변경하거나 두 개 사용해야하거나, 로컬에서 작업하던 저장소들의 사용자 및 SSH 키를 변경하고 싶을 수 있습니다. 이 글에서는 GitHub 계정 자체를 변경하는 경우와 특정 저장소에서만 다른 GitHub 계정을 사용하고 싶은 경우로 나눠서 GitHub 계정을 추가로 설정하는 방법을 알아봅니다.

GitHub 계정을 새로 만들었을 경우

GitHub 계정을 완전히 새로 만든 경우를 가정해본다면, 먼저 로컬 Git의 이메일과 사용자 이름을 새로 설정해야합니다.

$ git config --global user.name "Your New Name"
$ git config --global user.email your@new_email.com

git config 명령어로 원하는대로 변경되었는지 확인할 수 있습니다.

$ git config user.name
Your New Name
$ git config user.email
your@new_email.com

이제 새로운 커밋을 만들 때 이 정보가 사용됩니다. 로컬 Git 저장소의 커밋과 GitHub과 연동할 때 중요한 게 바로 이메일입니다. GitHub에서는 커밋에 기록된 이메일 정보를 보고, GitHub 사용자를 찾아 커밋 작성자로 자동으로 연결해줍니다. 따라서 이 이메일에는 반드시 새로운 GitHub 사용자의 이메일 중 하나를 등록해야합니다.

다음으로 새로운 SSH 키를 생성해서 등록해주어야합니다. SSH 키는 사용자를 식별하는 고유한 정보이기 때문에 이미 등록된 SSH 키를 새로운 GitHub 계정에도 등록하는 것은 불가능합니다. 따라서 아직 SSH 키를 생성하지 않았다면 새로 생성해야합니다. 먼저 기존에 사용하던 키를 백업해두겠습니다.

$ cd ~/.ssh/
$ mkdir old_ssh_key
$ mv id_ed25519 id_ed25519.pub old_ssh_key

여기서는 키의 이름이 id_ed25519, id_ed25519.pub라고 가정하고 있습니다. old_ssh_key 디렉터리에 임시로 복사해두었습니다만, 필요하다면 적절히 위치에 백업해두는 것을 권장합니다.

이제 키를 새로 만듭니다. 중간에 파일 위치와 패스워드를 추가로 질문합니다만, 여기서는 기본값을 사용하겠습니다. SSH 키 생성에 대한 더 자세한 정보와 옵션에 대해서는 다음 글을 참고해주세요.

$ ssh-keygen -t ed25519 -C "your@new_email.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/lainyzine/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

새로 생성한 SSH 퍼블릭 키의 정보를 출력해봅니다. 이 내용을 복사해주세요.

$ cat id_ed25519.pub
ssh-ed25519 AAAA...

새로 생성한 계정으로 GitHub에 로그인한 후 아래 페이지로 이동합니다.

Title에는 적절한 이름을 붙여주고, 앞에서 복사한 퍼블릭 키의 내용을 Key에 입력해줍니다. Add SSH key를 클리하면 SSH 키가 등록됩니다.

GitHub의 SSH 키 추가 화면

이제 로컬 개발환경에서 Git을 사용하고, SSH 프로토콜로 GitHub 작업을 할 때 새로운 계정의 정보가 사용됩니다.

특정 저장소의 GitHub 계정만 변경하고 싶은 경우

이번에는 특정 로컬 Git 저장소의 GitHub 계정만 변경하고 싶은 경우입니다. 먼저 사용자를 변경하고 싶은 GitHub 저장소로 이동해줍니다.

$ git config user.name "AnotherAccount"
$ git config user.email another@example.com

--global 옵션을 사용하지 않은 점에 주목해주세요. 이 옵션을 사용하지 않으면, 현재 위치한 Git 저장소에만 별도로 설정값이 적용됩니다. 앞서 설명한대로 user.email 값이 GitHub 사용자 정보와 연결되니, 변경할 GitHub 사용자의 이메일 값을 정확히 설정해주어야합니다.

다음으로 SSH 설정을 진행합니다. 사용하고자 하는 계정에 연동된 SSH 키를 셋업해서 사용해야만, 해당 GitHub 계정의 권한을 사용할 수 있습니다. 하나의 계정을 사용할 때보다는 조금 복잡합니다. 기존 GitHub의 계정의 SSH 키는 ~/.ssh/id_ed25519를 사용하고 있다고 하겠습니다.

이미 새로운 계정의 SSH 키가 있다면 SSH 이를 복사해옵니다. 키 파일은 ~/.ssh/id_ed25519-another, ~/.ssh/id_ed25519-another.pub을 가정하겠습니다. 키가 없다면 새로 하나 생성합니다.

$ cd ~/.ssh/
$ ssh-keygen -t ed25519 -C "another@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/lainyzine/.ssh/id_ed25519): /Users/lainyzine/.ssh/id_ed25519-another
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

복사해온, 혹은 새로 생성한 키의 퍼블릭키를 출력해봅니다.

$ cat id_ed25519.pub
ssh-ed25519 AAAA...

새로 사용하려는 GitHub 계정에 SSH 키를 추가해야합니다. 이미 추가했다면 넘어가도 무방합니다.

GitHub에 로그인한 후 아래 페이지로 이동합니다. 위의 퍼블릭 키 출력 내용을 복사해서 Key에 넣어줍니다. Title에는 적절한 이름을 붙여줍니다.

GitHub의 SSH 키 추가 페이지

다음 내용을 ~/.ssh/config에 추가해줍니다.

Host github-another
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/id_ed25519-another

이제 호스트 이름으로 서로 다른 계정을 사용하는 것이 가능합니다. ssh -T 명령어로 github에 접속할 때 어떤 계정이 사용중인지 확인해볼 수 있습니다. 원래 호스트명인 github.com를 사용하면 id_ed25519 키에 연결된 계정으로 인증이 되고, github-another를 사용하면 id_ed25519-another 키에 연결된 계정으로 인증이 됩니다.

$ ssh -T git@github.com
Hi LainyZine! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@github-another
Hi LainyZine-another! You've successfully authenticated, but GitHub does not provide shell access.

다시 새로운 계정을 사용하는 저장소 경로로 이동합니다. 그리고 다음 명령어로 GitHub 원격 저장소 origin 주소를 업데이트합니다. github.com 부분을 ~/.ssh/config에서 설정한대로 github-another으로 변경합니다.

$ git remote get-url origin
git@github.com:lainyzine-another/awesome-project.git

$ git remote set-url origin git@github-another:lainyzine-another/awesome-project.git

$ git remote get-url origin
git@github-another:lainyzine-another/awesome-project.git

이걸로 특정 저장소에서만 다른 계정을 사용하는 경우도 셋업을 마쳤습니다.

한 두 개의 저장소에서만 다른 계정을 사용한다면 이 방법으로도 충분합니다. 좀 더 본격적으로 멀티 어카운트를 사용해야하는 상황에 대해서는 아래 글에서 자세히 다루고 있으니 참고해주세요.

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.