개발자 노트

[Github] 회사 계정과 개인 계정 분리해서 사용하기 본문

▶ FRONT-END ◀

[Github] 회사 계정과 개인 계정 분리해서 사용하기

heeyam 2023. 1. 7. 18:54
반응형

-- 문제 --

회사에서 사용하는 깃허브 계정과 개인적으로 사용하는 깃허브 계정이 분리되어 있는데, 현재 로컬의 git user email은 회사 깃허브 계정만 등록해서 사용하고 있다. 그런 상황에서 개인 깃허브 저장소 프로젝트를 clone한 후 commit을 추가하고 push를 시도하니 저장소에 push 권한이 없다는 에러가 났다.

하지만 여전히 나는 로컬에서 두 계정 모두를 자유롭게 이용하고 싶었다.


-- 해결 --

로컬에서 사용할 각각의 깃허브 계정마다 SSH 키를 생성하고 해당 깃허브 페이지에서 생성한 공개키를 등록한 다음, 로컬에서 config 파일을 이용해 계정 이메일을 분리해서 설정해두면 된다. 해당 내용은 단계별로 기록했다.

1. SSH 키 생성 (개인 & 회사 깃허브 계정 이메일)

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "your_email@example.com"

~/.ssh 폴더로 이동한 후 위의 명령어를 입력하면 SSH 키를 생성할 수 있다. "your_email@example.com" 에는 개인 깃허브 계정 이메일을 입력하면 된다. 위의 명령어를 입력하면 아래와 같은 단계를 거친다.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/닉네임/.ssh/id_rsa): id_rsa_me
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

개인 깃허브 계정에 대한 SSH 키를 생성할 것이기 때문에, 이름을  id_rsa_me  라고 입력했다. 그리고 passphrase를 입력하라고 하는데 아무것도 입력하지 않고 엔터를 눌렀다. 실행이 완료하면  id_rsa_me 와  id_rsa_me.pub  파일이 생성된다.

그리고 이번에는 회사 깃허브 계정 이메일을 입력해서 SSH 키를 생성한다. 회사용 키 이름은  id_rsa_work  로 했다. 그러면 id_rsa_work  와  id_rsa_work.pub  파일이 생성된다.

2. ssh config 파일 설정 및 ssh 키 ssh-agent에 등록

$ eval "$(ssh-agent -s)" // ssh-agent 실행
$ open ~/.ssh/config // config 파일을 연다.

$ touch ~/.ssh/config // config 파일이 없으면, 파일을 만든다.
$ open ~/.ssh/config // 파일이 만들어졌으니, 다시 파일을 연다.

~/.ssh/config 파일에 아래의 정보를 입력하고 저장한다.

# 개인 계정
Host github.com
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_me

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

위 설정은, 일종의 변환을 위한 설정이다. 예를 들자면, 아래 이미지처럼 clone 하고 싶은 깃허브 저장소에 가서 SSH로 clone을 하려고 주소를 보면 git@github.com:programmer-heeney/practice-git.git 로 되어있다. 그런데 이 주소를 그대로 복사해서 사용하는 것이 아니라 수동으로 git@github.com-work:programmer-heeney/practice-git.git 이런식으로 원하는 계정에 맞게 수정한 주소를 clone 해야한다(리모트 저장소로 등록할 때도 수동으로 설정해줘야한다). 예제는 회사 계정으로 프로젝트를 관리하려고 Host를 github.com-work 로 설정했다. 그러면 설정해둔 config 파일의 내용처럼 github.com-work는 실제 호출할 때는 HostName으로 설정한 github.com 을 사용하고, IdentifyFile로 설정해둔 id_ras_work ssh 키를 사용한다.

참고로 개인용은 별도의 수정 없이 사용하려고 Host를 github.com 으로 설정해뒀다.

$ ssh-add --apple-use-keychain ~/.ssh/id_rsa_me // 개인용 ssh 키 등록
$ ssh-add --apple-use-keychain ~/.ssh/id_rsa_work // 회사용 ssh 키 등록

3. 깃허브 페이지에 공개키 등록

$ cat id_rsa_me.pub | pbcopy // 개인용 ssh 공개키 복사

깃허브 > 프로필 클릭 > Settings > SSH and GPG keys 메뉴

개인용 깃허브에 접속하면 우측 상단에 프로필 > Settings 메뉴 > SSH and GPG Keys 메뉴에 들어가면 위의 화면을 볼 수 있다. New SSH key 를 클릭하면, title은 자유롭게 입력하고 본문에는 복사한 공개키(.pub) 내용을 붙여 넣으면 된다.

같은 방식으로 회사용 SSH 공개키를 복사해서 회사용 깃허브에 접속하여 공개키를 등록한다.

$ cat id_rsa_work.pub | pbcopy // 공개용 ssh 공개키 복사

4. .gitconfig 설정으로 commit 계정 분리하기

깃 커밋 메시지를 작성할 때 이메일과 이름 정보가 들어가는데, 이젠 개인용/회사용 프로젝트에 따라 커밋 메시지 계정이 잘 연결되도록 설정을 해줘야한다. 저장소별 로컬 프로젝트마다 config 파일을 설정하는 건 번거로우니 개인용/회사용으로 프로젝트 저장용 폴더를 분리해두고 전역 .gitconfig 파일을 수정해서 사용하는 편이 편하다. 

 

1. 먼저 회사용 깃허브 계정 정보를 저장해두고 사용할 .gitconfig-work 파일을 만든다.

$ touch ~/.gitconfig-work // 회사용 계정정보를 담은 파일을 생성한다.
$ open ~/.gitconfig-work // 생성한 파일을 연다.
[user]
	name = 회사용 깃허브 계정 이름
	email = 회사용 깃허브 계정 이메일

2. 전역 .gitconfig 파일에 개인용 계정으로 user 정보를 저장하고 icludeIf 섹션을 이용해서 회사용 프로젝트가 지정해둔 폴더 하위(~/projects/works/)에 있으면 .gitconfig-work 파일을 추가로 불러와 회사용으로 저장해둔 user 정보를 사용하도록 등록한다.

$ open ~/.gitconfig // 전역 .gitconfig 파일을 연다.
[user]
	name = 개인용 깃허브 계정 이름
	email = 개인용 깃허브 계정 이메일
[includeIf "gitdir:~/projects/works/"]
	path = .gitconfig-work

5. 여전히 push가 안된다면 >> 기존 레포지토리 remote origin 주소 변경

SSH가 아닌 HTTPS 로 클론해오거나 remote origin url 이 설정되어져 있던 기존의 개인용 로컬 프로젝트 폴더에서 push 해보았더니, 여전히 원격 저장소 접근 에러가 발생했다. 그래서 해당프로젝트폴더경로/.git/config 에서 remote url을 변경한 후 다시 시도해보니 push가 잘 된 것을 확인할 수 있었다.

$ open .git/config // git 프로젝트 폴더 경로에서 .git/config 파일을 연다.

// 아래처럼 remote 섹션의 url을 ssh 다운로드 경로로 수정한다.
[remote "origin"]
	url = git@github.com:programmer-heeney/practice-git.git

만약 회사 계정으로 해당 프로젝트를 관리하고 싶다면 아래처럼 설정해주면 된다. 즉, @뒤에 오는 host는 위에서 ~/.ssh/config 파일에서 설정해둔 host로 입력해주면된다.

[remote "origin"]
	url = git@github.com-work:programmer-heeney/practice-git.git

-- 참고 문서 --

 - SSH 키 생성, 공개키 등록, config 파일 설정

 

[GitHub] SSH를 이용해 여러개의 깃허브 계정 사용하기

프로젝트를 하다보면 서로 다른 깃허브 계정으로 작업해야 할 때가 있다. 예를 들어, 회사 프로젝트는 회사 깃허브 계정으로 개인 프로젝트는 개인 깃허브 계정으로 사용하는 경우이다. SSH를 이

velog.io

- 이메일 주소 분리

 

Git 계정 여러 개 동시 사용하기 :: Outsider's Dev Story

코드 저장소로 GitHub을 주로 사용해 왔는데 요즘은 회사에서도 GitHub을 쓰는 경우가 많아져서 계정 관리가 신경 쓰이는 편이다. 물론 사내에 이상한(?) 코드 저장소가 있는 것보다는 GitHub을 쓰는

blog.outsider.ne.kr

- ssh config 파일 설정 및 키 등록

 

Generating a new SSH key and adding it to the ssh-agent - GitHub Enterprise Server 3.7 Docs

About SSH key passphrases You can access and write data in repositories on your GitHub Enterprise Server instance using SSH (Secure Shell Protocol). When you connect via SSH, you authenticate using a private key file on your local machine. For more informa

docs.github.com

- .gitconfig 파일 설정

반응형
Comments