한 기업의 프로젝트만 진행하는 개발자라면 고려사항이 아닐 수 있습니다. 여러 사이드 프로젝트를 진행하고, 프리랜서로서 여러 업무를 맡아하는 개발자 라면 여러 계정으로 깃허브 업로드를 사용할 수 있습니다. 하지만, 로컬의 저장된 계정으로 작업을 하면서 , 회사계정이름으로 개인계정에 커밋 하게 되는 상황도 발생할 수 있습니다. 여러개의 계정을 사용하고자 할 때 'SSH' key는 우리에게 훌륭한 방법중 하나가 됩니다.
여러개의 계정을 한 로컬 머신에서
파이프라인으로 보면 이러한 형태가 될 것입니다. 이를 위해 사용하는 것이 ssh key 방식입니다.
ssh key
ssh key쌍(개인키,공개키)를 생성한 다음에 공개키를 깃허브계정에 등록한 다음에 암호화,복호화 과정을 통해서 계정의 주인인지 확인하는 방법입니다. 이를 이용하면 원하는 계정으로 업로드를 할 수 있습니다. 구체적으로 어떻게 하는지 알아보도록 하겟습니다.
SSH key 생성
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "your_personal_email@domain.com"
# save as id_rsa_personal
$ ssh-keygen -t rsa -b 4096 -C "your_work_email@domain.com"
# save as id_rsa_work
.ssh 디렉토리가 없다면 만들어주면 됩니다.
그러면, 아래와 같은 4개의 파일 을 .ssh 디렉토리에 얻게될겁니다.
id_rsa_personal
id_rsa_personal.pub
id_rsa_work
id_rsa_work.pub
Note: .pub 확장자의 파일들은 깃허브 계정에 등록할 공개키입니다.
깃허브 계정에 ssh키 등록
.pub 확장자의 파일 내용을 복사합니다.
$ pbcopy < ~/.ssh/id_rsa_personal.pub
※윈도우의 경우 메모장형식으로 열어서 해도 됩니다.
깃허브 계정의 Settings 에서 SSH and GPG keys 탭에 들어갑니다.
New SSH key 탭을 선택합니다.
복사해둔 공개키를 붙여넣기 합니다.
키를 관리하기 위한 config 파일 생성
$ touch config
※윈도우의 경우 메모장형식으로 생성해도 됩니다.
파일을 열고 아래와 같은내용으로 수정해줍니다.
# Personal account - default config
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# Work account
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
두 개의 git 구성 파일을 만들어 보겠습니다
첫 번째 파일은 개인 프로젝트에서 사용하기위한 전역 git 구성 용이고 두 번째 파일은 작업 프로젝트 용입니다.
$ cd ~
$ nano ~/.gitconfig
파일내용:
[user]
name = John Doe
email = johndoe@domain.com
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
작업 프로젝트 gitconfig를 만들어보겠습니다
$ nano ~/work/.gitconfig
[user]
email = john.doe@company.com
로컬 머신에 키 저장하기
이전에 저장했던 키를 삭제해줍니다.
$ cd ~
$ ssh-add -D
새로운 키들을 추가 해주도록합니다.
$ ssh-add id_rsa_personal
$ ssh-add id_rsa_work
새로운 키들이 잘 추가되었는지 확인해주도록 합니다.
$ ssh-add -l
아래 명령어를 통해서 Github으로의 키 인증을 합니다.
$ ssh -T github.com-personal
# Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T github.com-work
# Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
깃헙 저장소를 클론하면서 테스트해보기
개인 깃헙 계정으로 로그인 합니다. 새 저장소를 test-ssh 라는 이름으로 생성하겠습니다.
아래의 과정을 통해서 , 저장소를 클론하고 첫 커밋을 해보도록 하겠습니다.
$ git clone git@github.com-personal:USERNAME/test-ssh.git
$ cd test-ssh
$ touch index.html
$ echo "Hello World" >> index.html
$ git add .
$ git commit -m 'Add index file'
$ git push origin master
주의점: 깃헙 저장소에서 주소를 복사해서 할때는 , git@github.com:USERNAME/test-ssh.git 형식을 되어있을텐데, com뒤에 -personal을 붙이지 않으면 permisiion denied 오류를 받게 될것입니다.
필자는 이오류로 4시간을 해맸습니다.
'깃허브' 카테고리의 다른 글
깃허브 커밋 메시지 룰을 어디까지 지켜야 하는가 (0) | 2021.06.09 |
---|