회사 컴퓨터로 개인 깃 레포를 사용할 일이 있었습니다. 평소와 같이 클론 받고 커밋, 푸시를 했는데 회사 계정으로 커밋이 남겨지는 문제가 있었습니다. 개인 계정을 이용해 커밋 메시지를 남기고 싶어 방법을 찾아 적용하였고 과정을 정리하기 위해 + 저처럼 해매시는 분들에게 도움이 되기 위해 + 안 까먹기 위해 문서를 작성하였습니다.
자세히 작성하다보니 문서가 꽤 길어졌는데, 여유로운 마음으로 천천히 읽어주시길 바랍니다.
$ 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 키 입니다.
$ 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개를 등록하였습니다.
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 가 연결되었는지 테스트할때 작성하는 명령어가 좀 더 쉬워집니다.
$ 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 붙여넣기.
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에서 아이콘을 보면 회색에서 초록색으로 변경된 것을 확인할 수 있습니다.
특정 폴더에 git 개인 계정을 사용할 수 있도록 설정을 할 것입니다.
먼저 홈 경로에 git 개인 계정에 대한 정보를 저장하는 파일을 .gitconfig
파일을 만듭니다. 여기서는 .gitconfig-private
이라는 이름으로 만들었습니다.
$ vim ~/.gitconfig-private
파일 안에 개인 git 계정 정보를 입력합니다.
다음으로 홈 경로에 있는 .gitconfig
파일에 접근하여 조건을 작성합니다. .gitconfig
파일은 git을 사용하면 보통 홈 경로에 만들어져있습니다.
$ vi ~/.gitconfig
# 해당 폴더에서는 path에 해당하는 gitconfig를 사용하겠다.
[includeIf "gitdir:~/Desktop/j~~/"]
path=~/.gitconfig-private
사용하고자 하는 폴더의 경로를 작성해주시면 경로 지정이 완료됩니다.
이제 다 왔습니다. 등록한 개인 계정, 설정한 폴더로 clone 및 commit 메시지를 남기는 테스트를 진행해보겠습니다.
우선 SSH로 주소를 복사하고git@github.com 부분을 ~/.ssh/config
에서 설정한 Host로 변경해줍니다. (변경 안 해도 될때도 있어요... 이건 왜 그런지 몰루,..,)
수정 사항을 하나 만들어서 add commit 후 로그를 살펴보면
짜잔!!! git 개인 계정으로 등록된 것을 확인할 수 있습니다.
긴 글을 끝까지 읽어주셔서 감사합니다. 수고 많으셨습니다~~!
문서를 작성하면서 테스트를 진행하며 다시 해봤는데, 에러가 또 나더군요... 여간 쉬운일이 아닌 것 같습니다.
다음에는 아 그런 거는 모르겠고 어떻게 해야 해결할 수 있는데? 의 니즈를 해결할 수 있는 문서를 정리하겠습니다.