github 인증을 http로 하면 별 문제가 없습니다만 ssh 인증으로 사용할 때, 만약 자신의 ssh key를 여러 repository에 등록하려고 하면 어떻게 될까요?
아마도 위와 같은 상황이 연출될 것입니다.
이미 해당 ssh key가 다른 repository에 이미 등록되어 이 키를 재활용 할 수가 없는것이죠.
해결방법
방법은 간단합니다. 특정 repository 마다 ssh key를 각각에 맞게 여러개 만들어서
github repository 설정에서 맞게 등록해주면 됩니다.
우선 ssh-keygen 명령을 통해 필요한 ssh key들을 만들어 봅시다.
(참고 https://git-scm.com/book/ko/v2/Git-서버-SSH-공개키-만들기)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/자신의/홈패스/.ssh/id_rsa):
Created directory '/자신의/홈패스/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /자신의/홈패스/.ssh/id_rsa.
Your public key has been saved in /자신의/홈패스/.ssh/id_rsa.pub.
The key fingerprint is:
이처럼 파일명을 지정해 주지 않으면 id_rsa.pub , id_rsa로 파일이 생성됩니다.
필요한 만큼 ssh key 생성을 하도록 합시다.
그 다음은 특정 repository 마다 ssh key를 지정합시다.
1 2 3 4 5 6 7 8 9 | $ vi ~/.ssh/config Host project1.github.com Hostname github.com IdentityFile ~/.ssh/id_rsa1 Host project2.github.com Hostname github.com IdentityFile ~/.ssh/id_rsa2 | cs |
Host 뒤에는 내가 식별하기 쉬운 가상의 path를 알아보기 쉽게 넣어주세요.
Hostname은 실제 github 주소를 입력합니다.
IdentityFile은 각 repository에 사용할 ssh key 파일의 패스를 정확히 입력해주세요.
이제 본인 로컬에 있는 git 프로젝트의 remote를 위에서 설정한 Host로 바꿔주세요.
1 2 3 4 5 6 | $ git remote -v origin git@github.com:user/project1.git (fetch) origin git@github.com:user/project1.git (push) $ git remote set-url origin git@project1.github.com:user/project1.git | cs |
project2 도 같은 방법으로 바꿔주도록 합시다.
마치며
http로 하면 되지 뭐하러 이렇게 하느냐고 하실 수 있지만
한 서버에서 여러 프로젝트로 deploy key를 설정할때는 위 방법을 사용하면 되겠습니다.
(서버에서 내 아이디 / 패스워드를 넣을순 없으니까요)
'테크 노트 > 소소한 개발 팁' 카테고리의 다른 글
android, realm 초간단 정리 (0) | 2019.03.19 |
---|---|
spring, aop 특정 조건에서 실행 제외하기 (0) | 2019.03.15 |
예쁘게 코드 공유하기 (2) | 2019.03.12 |
angular, 같은 패스로 또 route할때 강제 새로고침 시키기 (0) | 2019.03.12 |
java, checked excepton을 아름답게 unchecked exception으로 바꾸기 (0) | 2019.03.12 |