하나의 PC에서 github 계정 여러개 쓰기

Jemin·2024년 4월 2일
1

개발 지식

목록 보기
52/54
post-thumbnail

서론

회사에서 가끔 시간이 나면 개인 계정으로 공부하는데 그때마다 깃허브 설정을 깜빡하면 커밋로그가 다른 계정으로 찍히는 일이 가끔 있어서 아예 2개 계정을 사용하는 방법을 찾아서 적용했다.

SSH Key를 사용해서 깃허브에 등록하면 편하게 프로젝트마다 다른 계정을 사용할 수 있다.

SSH Key 만들기

먼저 SSH Key를 만들어보자.

bash가 편해서 gitbash를 사용해서 진행할 것이다.

  1. 먼저 ssh 디렉토리로 이동한다.
$ cd ~/.ssh
  1. github email로 SSH Key를 생성한다.
$ ssh-keygen -t rsa -C "email@address.com" -f "key_name"
  • ssh-keygen: SSH 키 쌍을 생성하는 명령어다.
  • -t rsa: RSA 알고리즘을 사용하여 SSH 키 쌍을 생성한다. RSA는 공개 키 암호화 및 디지털 서명을 위한 가장 일반적인 알고리즘이다.
  • -C "email@address.com": 생성되는 SSH 키에 대한 주석을 지정한다. 일반적으로 이메일 주소를 사용한다.
  • -f "key_name": 생성된 키 파일의 이름을 지정한다. 이 옵션으로 생성된 개인키(key_name) 와 공개 키(key_name.pub)의 파일 이름을 지정한다.
  1. ssh-agent에 SSH Key를 추가한다.
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/key_name
  • eval "$(ssh-agent -s)": SSH agent를 현재 쉘의 백그라운드에서 실행한다.
  • ssh-add ~/.ssh/key_name: 개인 키를 SSH 에이전트에 추가한다.

이렇게 함으로써 SSH 연결 시에 개인 키를 입력할 필요 없이 자동으로 인증할 수 있게 된다.

Github에 SSH Public Key 추가

  1. 생성된 공개 키 파일의 내용을 복사한다.
$ cat ~/.ssh/key_name.pub

위 명령어를 사용해서 복사해도되고 파일을 직접 열거나 다른 방식으로 복사해도 된다.

  1. 깃허브 설정에서 New SSH Key를 통해 복사한 SSH 공개 키 파일을 등록한다.

  1. SSH config 파일 설정
$ vi ~/.ssh/config

config 파일 하나에 아래의 설정을 계정마다 추가해주면 된다.

HOST github.com-user_name
	HostName github.com
    User user_name
    IdentityFile ~/.ssh/key_name
  • HOST: github.com에 대한 별칭인 github.com-user_name을 정의한다. 이 별칭은 SSH 클라이언트에서 사용된다. 뒤의 user_name은 원하는대로 변경해도 상관없다.
  • HostName: 이 호스트의 실제 이름이다. SSH 클라이언트는 이 호스트 이름을 사용하여 연결을 시도한다.
  • User: SSH 연결에 사용되는 사용자 이름을 설정한다.
  • IdentityFile: SSH 연결 시 사용할 개인 키 파일의 경로다. 경로에 있는 개인 키를 사용해 인증을 시도한다.
  1. SSH 연결 확인하기
$ ssh -T git@github.com-KKamjangE

Hi KKamjangE! You've successfully authenticated, but GitHub does not provide shell access.

Github와 SSH 연결이 성공적으로 설정되었고, 인증이 완료되었다는 것을 알려준다. 하지만 Github는 SSH 연결을 통해 쉘 엑세스를 제공하지 않기 때문에 but GitHub does not provide shell access. 와 같은 문구가 나오는 것이니 신경 쓸 필요 없다.

Github 레포지토리 접근

이제 레포지토리에 연결하여 각각의 계정으로 접근해보자.

git clone

이미 github 생성된 레포지토리라면 SSH 탭에서 주소를 복사해온다.

그리고 위에서 설정한 config 파일에 맞게 Host를 별칭으로 바꿔주면 된다.

$ git@github.com:KKamjangE/Next14-Toy.git // 기존의 주소

$ git@github.com-KKamjangE:KKamjangE/Next14-Toy.git // config 설정과 동일하게 Host 변경

Host를 config에 설정한 별칭으로 바꾸는 이유는 config에서 작성한 Host 별칭을 통해 IdentityFile을 사용하여 각각 다른 개인 키로 인증 작업을 하기 때문이다.

remote add origin

아직 github에 레포지토리를 생성하지 않았다면 아래와 같이 연결해주며 된다. 여기서도 config 파일에 설정한 Host로 별칭을 바꿔 주어야 한다.

$ git remote add origin git@github.com-KKamjangE:KKamjangE/Next14-Toy.git

로컬에서 작업 중인 프로젝트라면 remote 설정을 바꾸면 된다.

$ git remote set-url origin git@github.com-KKamjangE:KKamjangE/Next14-Toy.git

이제 로컬 저장소의 git config를 수정하면 된다.

$ git config user.email email@address.com

Git에 기록되는 계정

git은 git config에 있는 user.name과 user.email을 사용해 작업하는 계정 정보를 기록한다.

global로 등록된 값과 local(저장소)로 등록된 값이 둘 다 존재하면 local의 우선순위가 높기 때문에 여러개의 계정의 사용이 가능해진다.

마무리

Git 클라이언트는 각 Github 계정에 대해 다른 SSH 키를 사용해서 연결하고, 각 저장소에 대해 해당하는 계정으로 인증하여 작업을 수행하기 때문에 이제 하나의 PC에서 여러 개의 Git 계정을 사용할 수 있게 되었다.

참고
Github SSH Key 등록하기
한 컴퓨터에서 Github 계정 여러개 사용하기

profile
경험은 일어난 무엇이 아니라, 그 일어난 일로 무엇을 하느냐이다.

0개의 댓글

관련 채용 정보