Context
깃헙은 Repository에 Push, Clone 등의 액션을 취할 때 계정을 인증하게끔 되어 있다. public repository라면 설정에 따라 크게 상관없을 수 있으나 private repository 이거나 권한이 엄격히 관리되는 repository라면 인증이 필수적이다.
일반적으로 계정 인증은 계정명/패스워드로 이루어지지만 현재 깃헙에서는 이러한 방식의 인증을 사용할 수 없도록 제한하고 있다.
이를 대체할 수 있는 가장 대표적인 방법이 SSH 인증 방식인데, 많은 사람들이 하나 Mac에서 여러 깃헙 계정을 운영하는 것에 어려움을 겪는 것을 보고 글을 남겨본다. Windows & Linux는 기본적으로 되는 것 같으나 Mac에서는 추가적인 작업이 필요하다.
깃헙 SSH Key 등록
SSH Key를 발급하고 GitHub 계정에 등록하는 과정은 공식 문서(링크)에 자세히 나와있으니 간략하게만 다루겠다. 공식 문서의 과정 중 config 파일 설정은 잠시 생략해도 좋다.
- 터미널 실행
- GitHub email address를 포함해 아래 명령어 입력
$ ssh-keygen -t ed25519 -C "your_email@example.com"
- GitHub 계정에 SSH 공개키 등록: 링크
config 파일을 이용한 여러 계정 운용하기
하나의 계정에 대한 ssh 키를 발행하고, GitHub에 공개키 등록까지 마쳤다면, 이제 ssh config 파일을 작성해야 한다.
$ vi ~/.ssh/config
이 곳에 아래와 같은 형태로 작성해주면 된다.
Host github.com
IdentityFile ~/.ssh/{앞서 생성한 SSH 키 이름}
HostName github.com
User {GitHub 사용자명}
[작성 예시]
Host github.com
IdentityFile ~/.ssh/github_960813
HostName github.com
User 960813
여기까지 완료되었다면 SSH 연동이 완료된 것이다.
이제 Repository를 클론해보자. 일반적인 HTTPS 방식이 아니라 SSH 방식을 사용해야 한다. GitHub Web에서는 Code 버튼을 눌러 URL을 찾을 수 있다.
$ git clone git@github.com:ev-incentive-board/system.git
정상적으로 클론 되었을 것이다.
우리는 여기서 Repository의 URL을 잘 살펴보아야 한다. URL은 크게 3가지 영역으로 구분되는데 이는 다음과 같다.
- git: SSH 사용자가 git 임을 명시
- @github.com: SSH를 이용해 액세스하려는 Host
- ev-incentive-board/system.git: Repository 위치
@github.com 이 핵심이다. 이는 앞서 작성한 config 파일의 Host에 해당하는 부분이다. 즉, 여러 인증서를 사용하려면 이 부분을 적절히 바꿔 원하는 IdentifyFile을 사용하도록하면 된다.
Host github-960813
HostName github.com
IdentityFile ~/.ssh/github_960813
User 960813
Host github-xxxxxxx
IdentityFile ~/.ssh/github_xxxxxxx
HostName github.com
User xxxxxxx
config 파일을 위와같이 설정했다면, repository의 remote-url을 git@github-960813:..... / git@github-xxxxxxx:.... 꼴로 사용하면 정상 동작하는 것을 확인할 수 있을 것이다.
이미 local에서 사용하고 있는 repository라면 아래 명령어를 이용하자.
$ git remote set-url origin git@github-xxxxxx:....
☕️ Networking
기술 직군의 기술적인 교류, 커리어 이야기, 직군 무관 네트워킹 모두 환영합니다!
위클리 아카데미 오픈 채팅방(비밀번호: 9323)
kakaotalk: https://open.kakao.com/o/gyvuT5Yd