여러 github 계정 사용하기 for mac (SSH 설정)

eunji hwang·2020년 7월 26일
6

git&github

목록 보기
4/4

만약, 하나의 컴퓨터에서 깃헙 계정 2개를 나누어 사용하고 싶다면?
ssh-key 설정한 뒤, remote 주소를 ssh방식을 사용

참고 한 & 더 잘 설명된 포스팅들~

시작에 앞서

  • 갑자기 깃헙 계정을 새로 만들고 싶어짐, 그리하여 야심차게 계정 하나 추가요😎
  • New계정의 레포를 사용하려니 기존 계정과 겹치면서 퍼미션-둥-둥!😨
  • 글로벌 ~/.gitcongig 과 로컬 프로젝트루트/.git/config에 설정된 계정 정보를 바꿔도 안됨! 멘-붕😱
    • 글로벌 < 로컬 설정 우선시 한다하여.. 수정했지마눙 안됨😂
  • 그리하여 ssh를 찾아보게 되었고, 핳 새로운 영역..😃

SSH(시큐어 셸, Secure Shell)

네트워크로 다른 컴퓨터에 로그인/원격시스템에 명령을 실행, 파일복사를 할 수있게 하는 응용프로그램 또는 프로토콜
SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
위키 : SSH 참조

진행 순서

  1. ssh-key 파일 생성
  2. ssh-key 등록
  3. ssh config 파일 작성
  4. github 사이트 계정 설정
  5. ssh 연결테스트
  6. 프로젝트의 git remote 설정

1) ssh-key 생성

cd ~/.ssh

  • 터미널을 열고 루트에서 ssh 숨김폴더로 이동, 없으면 생성(mkdir ~/.ssh)

ssh-keygen -t <암호화방식> -b <key크기 기본3072> -C '깃헙등록메일@메일.com'
ssh-keygen -t rsa -b 4096 -C 'my-mail@email.com' : 실제 작성

  • 위 와 같은 구조의 명령으로 key파일 생성
  • 2개 계정을 사용할 것이기에 2번 진행
  • -t 암호화 방식 지정 : rsa 지정
  • -b key의 byte-size 설정 : 지정 안하면 3072 기본값으로 설정 (최대 4096)
  • -C github에 등록한 email 작성 : my-mail@email.com
  • 명령 입력뒤 파일명/비밀번호 설정에 대한 input 등장하니 아래내용 참고하여 설정

Enter file in which to save the key (/Users/hwang/.ssh/id_rsa): <id_rsa_이름지정>

  • 터미널에 Enter 머시기 내용이 등장하면 파일명 지정 : id_rsa_workid_rsa_study으로 설정(각자 자유롭게~)
  • Enter를 누르고 넘긴다면 기본값 id_rsa로 설정됨

Enter passphrase (empty for no passphrase): <엔터누르고 다음>

  • 암호(비밀번호) 설정할꺼야? 입력안하면 암호 설정 안할께!

Enter same passphrase again: <엔터누르고 다음>

  • 위 암호와 동일하게 입력하여 진행
~    $ cd ~/.ssh
.ssh $ ssh-keygen -t rsa -C 'my-mail@mail.com'
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hwang/.ssh/id_rsa): <id_rsa_이름지정>
Enter passphrase (empty for no passphrase): <엔터누르고 다음>
Enter same passphrase again: <엔터누르고 다음>
... <뭔가 진행 함>
+---[RSA 3072]----+
|             ..oB|
|             . .o|
... <이런박스 나옴됨>
|          .  .+%#|
|           . e&E/|
|            .=+%%|
+----[SHA256]-----+

2개의 key를 생성하고 파일 목록을 확인해보자. 아래와 같이 총 4개 파일이 생성되었다면 완료

  • id_rsa_study : 기존계정-비공개-ssh
  • id_rsa_study.pub : 기존계정-공개-ssh
  • id_rsa_work : New계정-비공개-ssh
  • id_rsa_work.pub : New계정-공계-ssh

.pub 확장자가 붙은 파일만 공개하며, 이 파일 내용을 github계정 SSH설정에 등록하게 된다. github 계정 설정은 마지막에 살펴보자.


2) ssh-key 등록

생성한 key를 등록해보자!

eval "$(ssh-agent -s)"

  • 생성한 키를 ssh-agent에 등록(.. ssh-agent를 실행시키고.. 이후에 ssh-add로 등록을........ 정확히 모.름. 😇 )
  • Tonic's lesson learned 포스팅ssh-agent에 대한 설명을 읽어보니,
    • ssh-agent 에 등록하지 않고 ssh등록과 사용을 할 수 있지만, github에 연결 할때 비번입력하지 않고 쓰기위해서 설정한다함. 즉, 로그인 매번 하기 싫으면 ssh-agent 등록을 하세요!

ssh-add <key파일경로>

  • 명령을 통해 key 등록을 한다.

ssh-add -l : 등록된 key 목록을 확인

$ ssh-add ~/.ssh/id_rsa_study
Identity added: id_rsa_study (등록한메일1@gmail.com)

$ ssh-add ~/.ssh/id_rsa_work
Identity added: id_rsa_work (등록한메일2@gmail.com)

3) .ssh/config 생성

SSH 설정파일을 작성해야 한다. 숨김폴더에 들어가 생성해도 or 터미널에서 작성 or 에디터를 사용해 작성하도록 한다.
나는 터미널 + vim을 사용하도록 하겠다.

touch ~/.ssh/config

  • .ssh폴더에 config파일 생성

vi ~/.ssh/config

  • vim 에디터로 config 파일을 열고 아래와 같이 작성한다.
#  깃헙계정 work
#  -------------------
Host github.com-work
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_work
  User eungeegee 

# 깃헙계정 study
#  -------------------
Host github.com-study
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_study
  User zu-hwang
  • Host : github.com-<이름지정> : 하이픈(-)다음에는 원하는 이름을 지정, 앞으로 계속 써야하기 때문에 짧은 문자 추천
  • HostName : github.com
  • IdentityFile : ~/.ssh/ssh파일경로작성 : 각각의 ssh-key파일 경로를 작성
  • User : 나의 깃헙 계정지정~

4) github SSH 설정

위 과정까지 모두 마쳤다면, github에 로그인 하여 설정페이지를 찾자.

  • github.com > 로그인 > 오른쪽 상단 프로필사진 클릭 > settings > SSH and GPG keys > New SSH key
    • title : 아무거나 내가 보기 좋은 것으로 지정
    • key : 각 계정에 맞는 ssh-key _.pub 파일의 내용을 기입한다. 꼭 확장지 .pub 가 붙은 파일의 내용!
      • 편하게 하기 : 터미널에서 pbcopy > 파일경로를 통해 파일 내용을 클립보드에 복사해 붙여넣기
  • 2개의 계정 모두 ssh-key를 등록

5) SSH 연결테스트

SSH 설정에서 등록한 Host 값을 사용하여 연결테스트를 하자.

ssh -T git@github.com-지정값

ssh -T git@github.com-work

  • github.com-work Host 값 작성
    • 출력 : Hi eungeegee! You've successfully ....
  • github.com-study Host 값 작성
    • 출력 : Hi zu-hwang! You've successfully ....

6) 프로젝트 git remote 설정

신규 프로젝트 설정

이전까지 git 레포에 연결할때 https://github.... https 주소로 remote 했다면,
이제 그 옆에있는 use SSH 누르고 git@github.com:userid/reponame.git 방식을 사용

git remote add origin git@github.com-지정이름:깃헙계정/레포지토리명.git

  • 여기서 중요! 그냥 SSH-key 복사하기후 사용한다면 오류가 남, 우리는 계정이 2개이기 때문에 어떤 계정을 쓸지 지정해주는것이 뽀-인트! github.com-지정이름에 주의하자, 나는 지정이름을 work로 등록했기에 아래와 같이 입력하였다.

git remote add origin git@github.com-work:eungeegee/my-repo.git

기존 프로젝트 설정

위와 동일한 내용으로, 기족 프로젝트는 이미 설정되어 있는 주소를 변경하는 명령을 하면 된다.
git remote set-url origin git@github.com-지정이름:깃헙계정/레포지토리명.git으로 설정하도록 한다!

마치며

이게 뭐라고..
굳이 계정 만들어야 했냐며, 하루 반나절 내내 찾아보고, 까먹는다고 내용 정리하고..
...

하지만!
두개 설정되니 너무 만족,
얼마나 잘 쓸지는 모르겠지만 모쪼록.. 저와 같은 분들 화이팅!

profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

3개의 댓글

comment-user-thumbnail
2021년 7월 19일

저에게 빛과 소금같은 글이 되었어요. 고맙습니다! :D

답글 달기
comment-user-thumbnail
2021년 8월 25일

잘 읽고 갑니다!!공유 감사드려욤

답글 달기
comment-user-thumbnail
2023년 4월 20일

잘 읽었습니다! 몇가지 질문이 있습니다.
혹시 기존엔 어떤 상황에 문제가 발생하는 것일까요?
본문의 6. 프로젝트 Git remote 설정은 같은 레포를 한 컴퓨터에서 두 개의 계정으로 작업하고자 할 때인가요?
또, 하나의 SSH key를 두 개의 Github 계정에 등록하는 것으로는 문제 해결이 불가능한가용??

답글 달기