컴퓨터에서 git 계정 여러 개 사용하기

김재경·2022년 10월 6일
1
post-thumbnail

회사 컴퓨터로 개인 깃 레포를 사용할 일이 있었습니다. 평소와 같이 클론 받고 커밋, 푸시를 했는데 회사 계정으로 커밋이 남겨지는 문제가 있었습니다. 개인 계정을 이용해 커밋 메시지를 남기고 싶어 방법을 찾아 적용하였고 과정을 정리하기 위해 + 저처럼 해매시는 분들에게 도움이 되기 위해 + 안 까먹기 위해 문서를 작성하였습니다.

자세히 작성하다보니 문서가 꽤 길어졌는데, 여유로운 마음으로 천천히 읽어주시길 바랍니다.

구현한 기능

  1. 특정 폴더에서 내가 지정한 다른 계정으로 커밋 남기기
  2. 특정 폴더에서 clone 받기

등록 순서

  1. ssh key 생성
  2. ssh key 등록
  3. ssh config 파일 설정
  4. ssh key github에 등록
  5. ssh 연결 테스트
  6. .gitconfig 파일 설정
  7. 테스트 (clone, commit 메지시 남기기)

1. ssh key 생성

$ cd ~/.ssh

터미널을 키고 HOME 경로에 있는 .ssh 폴더로 이동합니다. (HOME 경로에(~/) .ssh가 있다고 가정하고 진행했습니다.)

$ ssh-keygen -t rsa -f private_id_rsa -C "private@example.com"

키를 만드는 명령어입니다.
각각의 의미는 다음과 같습니다.
ssh-keygen: ssh keygen을 만드는 명령어
-t rsa: 만들 키의 유형을 지정합니다. rsa 유형으로 만듭니다. 다른 유형으로 만들 수도 있습니다.
-f: 작성한 이름으로 rsa 파일을 만듭니다. 여기서는 private_id_rsa로 만들어집니다.
-C: 작성한 이메일과 연동되는 rsa 파일을 만듭니다. 여기서는 private@example.com으로 만들어집니다.

해당 명령어로 만든 결과 화면입니다.
prvate_id_rsa, prvate_id_rsa.pub 2개의 키 쌍이 생성됩니다.
id_rsa, id_rsa.pub 1개의 키 쌍은 회사 계정용 ssh 키 입니다.

2. ssh key 등록

$ eval ${ssh-agent} // ssh-agent를 다시 실행 안 하면 ssh-add deny 된다.
$ ssh-add id_rsa // 회사용 ssh 키 추가
$ ssh-add prvate_id_rsa // 개인용 ssh 키 추가
$ ssh-add -l // 저장

실행하면 다음과 같이 됩니다.
eval ${ssh-agent} 명령어가 기존에 있던 ssh 키가 등록되어 있던 것을 초기화 하는 것 같습니다. (정확한 내용은 좀 더 찾아보시길 바랍니다.) 그래서 사용할 ssh 키들을 전부 등록해줘야합니다. 지금은 기존에 회사용으로 사용중이던 ssh 키, 새로 사용할 개인 ssh 키 2개를 등록하였습니다.

3. ssh config 파일 설정

github에서 각각의 ssh key로 접근할 수 있도록 할 것입니다. 이를 위해 config 파일을 설정해야합니다.

$ touch ~/.ssh/config // config 파일이 없으면
$ vi ~/.ssh/config // config 파일이 있으면

Host: ssh 명령에 사용하는 이름. github 경로의 이름을 지정합니다. (이후에 사용)
HostName:Host에 지정된 이름이 매핑되는 실제 호스트 이름. github.com으로 하면 됩니다.
IdentityFile: 사용할 ssh 키
User: user 이름. 다른 이름으로 지정할 수 있지만, git 으로 하게되면 clone받을때, ssh 가 연결되었는지 테스트할때 작성하는 명령어가 좀 더 쉬워집니다.

4. ssh key github에 등록

$ vi ~/.ssh/private_id_rsa.pub

-f ssh-keygen 명령어로 만든 key중 public key를 열고 값을 복사합니다.
이후 ssh key를 동록하고 싶은 github으로 갑니다.
setting → SSH and GPG keys → New SSH key → 제목 입력 및 public key 붙여넣기.

5. ssh 연결 테스트

3번에서 등록한 Host를 이용해 연결 되었는지 테스트를 진행합니다. ~/.ssh 경로에서 진행합니다.

$ ssh -T ${Host}
$ ssh -T git@${Host}

$ ssh -T github.com-private
$ shh -T git@github.com-work

두 명령어 모두 가능합니다.
ssh -T ${Host}의 경우 ~/.ssh/config에서 User 를 git으로 등록한 경우 사용 가능합니다.

깃 계정의 이름이 보이면 연결에 성공한 것입니다. 상기 사진에서는 Hi j~~ / Hi J~~ 로 메시지가 다른 것을 확인 할 수 있습니다.
github setting에서 아이콘을 보면 회색에서 초록색으로 변경된 것을 확인할 수 있습니다.

6. .gitconfig 파일 설정

특정 폴더에 git 개인 계정을 사용할 수 있도록 설정을 할 것입니다.
먼저 홈 경로에 git 개인 계정에 대한 정보를 저장하는 파일을 .gitconfig 파일을 만듭니다. 여기서는 .gitconfig-private 이라는 이름으로 만들었습니다.

$ vim ~/.gitconfig-private

파일 안에 개인 git 계정 정보를 입력합니다.
다음으로 홈 경로에 있는 .gitconfig 파일에 접근하여 조건을 작성합니다. .gitconfig 파일은 git을 사용하면 보통 홈 경로에 만들어져있습니다.

$ vi ~/.gitconfig

# 해당 폴더에서는 path에 해당하는 gitconfig를 사용하겠다.
[includeIf "gitdir:~/Desktop/j~~/"]
        path=~/.gitconfig-private

사용하고자 하는 폴더의 경로를 작성해주시면 경로 지정이 완료됩니다.

7. 테스트 (clone, commit 메지시 남기기)

이제 다 왔습니다. 등록한 개인 계정, 설정한 폴더로 clone 및 commit 메시지를 남기는 테스트를 진행해보겠습니다.

우선 SSH로 주소를 복사하고

git@github.com 부분을 ~/.ssh/config에서 설정한 Host로 변경해줍니다. (변경 안 해도 될때도 있어요... 이건 왜 그런지 몰루,..,)

수정 사항을 하나 만들어서 add commit 후 로그를 살펴보면

짜잔!!! git 개인 계정으로 등록된 것을 확인할 수 있습니다.

긴 글을 끝까지 읽어주셔서 감사합니다. 수고 많으셨습니다~~!
문서를 작성하면서 테스트를 진행하며 다시 해봤는데, 에러가 또 나더군요... 여간 쉬운일이 아닌 것 같습니다.

다음에는 아 그런 거는 모르겠고 어떻게 해야 해결할 수 있는데? 의 니즈를 해결할 수 있는 문서를 정리하겠습니다.

참고

참고1
참고2
참고3
ssh-add 실패시 참고
ssh-keygen 옵션

profile
프런트앤드 개발자

0개의 댓글