티스토리 뷰
[Git] How to use multiple account of github on macOS
github에 여러 개의 계정이 있고, Visual Studo Code나 터미널에서 사용하다 보면 Permission error
나 User Denied
등의 오류를 만날 수 있다.
이런 문제들을 해결하고 SSH Key를 이용해서 여러 개의 github 계정을 설정하고 사용하는 방법을 정리해 놓는다.
문제점
단일 계정만 사용할 경우라면 pull, push를 처음할 때 계정 권한을 확인하는 프롬프트가 뜨고, 계정 정보를 입력하면 키 체인
에 보관되기 때문에 다음 부터는 입력하지 않아도 정상적으로 처리가 된다.
그러나 또 하나의 계정을 더 만들어서 Repository 동기화를 하려고 하면 키 체인에 저장된 정보 때문에 이전 계정의 정보를 사용하기 때문에 계속 오류가 발생하게 된다.
해결 방법
해결 방법은 간단하다. 각 계정에 대한 SSH Key
생성하고 github에 등록해서 관리하면 각 계정별 Repository에 대한 걱정 없이 편리하게 사용할 수 있다.
우선 Remote Repository를 확인해 보도록 하자.
# 현재 설정된 원격 저장소 보기
$ git remote -v
# 현재 저장소 설정 조회 (저장소 루트 폴더에 .git/config 파일에 정보가 존재한다)
$ git config --list
기존에 입력되어 있는 키 체인 정보 삭제
Spotlight 검색(F12) 등으로
키체인 접근
앱 실행![Spotlight 검색](http://ccambo.github.io/images/content /spotlight_key_chain_access.png?featherlight=false)
키체인 접근 앱에서
로그인
을 선택하고github.com
을 찾아서 삭제
참고
- macOS는 SSH 키들을
~/.ssh
디렉터리에 관리한다.- 이후 작업은 모두 이 경로에서 처리하는 것을 기준으로 한다.
- github는 계정당 하나의 SSH Key만 등록 가능하므로 사용할 계정만큼 생성하고 처리해 주면 된다.
이 문서에서는 ccambo
와 morris
라는 두 개의 계정을 사용하는 것으로 가정한다.
SSH Key 생성 및 등록
ssh key 생성
$ ssh-keygen -t rsa -b 4096 -C "ccambo@gmail.com" Generating public/private rsa key pair. Enter file in which to save the key (/Users/morris/.ssh/id_rsa): id_rsa_ccambo # 생성할 파일 명 입력 (아니면 그냥 Enter key, 이 경우는 id_rsa라는 기본 파일로 생성됨) Enter passphrase (empty for no passphrase): # 비밀번호 설정할 경우 입력 (아니면 Enter key) Enter same passphrase again: # 비밀번호 설정할 경우 입력 (아니면 Enter key) ...
ssh key macOS에 등록
# ssh agent 데몬으로 동작 시키기 (이 명령은 한번만 실행) $ eval "$(ssh-agent -s)" Agent pid 14194 # SSH Key 추가 $ ssh-add -K ~/.ssh/id_rsa_ccambo Identity added: /Users/<사용자 계정>/.ssh/id_rsa_ccambo (ccambo@gmail. com)
위의 단계를 사용할 계정 갯수만큼 반복한다.
이 문서의 샘플 기준이라면 아래와 같이 네 개의 파일이 생성되어야 한다.
- id_rsa_ccambo: ccambo 계정 비밀 키
- id_rsa_ccambo.pub: ccambo 계정 공개 키
- id_rsa_morris: morris 계정 비밀 키
- id_rsa_morris.pub: morris 계정 공개 키
github에 공개키 등록
생성한 계정별 공개키 파일의 내용을 github에 등록한다.
github.com에 로그인 하면 우측 상단의 계정 이미지
를 클릭하고 펼쳐진 서브 메뉴들에서 Settings
를 선택한다.
계정 Settings 화면의 좌측 메뉴에서 SSH and GPG keys
메뉴를 클릭하면 SSH Keys
화면의 우측 상단에 New SSH Key
버튼을 눌러서 다음과 같이 설정한다.
- Title: 식별할 수 있는 아무 이름이든 지정한다. (여기서는 ccambo SSH)
- Key: 생성된
id_rsa_ccambo.pub
파일의 내용을 그대로 복사해 넣는다.
참고
- 기존에 사용하던 SSH Key각 존재할 수 있다. 여러 개를 생성해서 (Title까지 동일해도 상관없다) 사용할 수 있지만, 가능하면 하나의 SSH Key만 유지하는 것이 좋다. 이전에 등록한 것이 있다면 삭제하도록 한다.
- 공개키 파일의 내용을 복사하지 않고 처리하려면 터미널에서 아래와 같이 명령을 사용해도 된다.
$ pbcopy < ~/.ssh/id_rsa_ccambo.pub
ssh config 파일 설정
대 부분 여러 개의 SSH Key를 운영하기 때문에 매번 서버에 접속할 때마다 SSH Key를 지정하는 것도 번거롭기 때문에 설정으로 저장해 놓고 사용하는 방법을 권장한다.
~/.ssh
디렉터리에 config
파일이 존재하는지를 확인하고 없다면 새로 생성하도록 한다.
github.com에 대한 접속 정보를 아래와 같이 설정해 주면 된다.
Host github.com-ccambo # ccambo 계정 용
HostName github.com
IdentityFile ~/.ssh/id_rsa_ccambo # 비밀 키 파일
User ccambo # github.com 계정 명
Host github.com-morris # Morris 계정 용
HostName github.com
IdentityFile ~/.ssh/id_rsa_morris # 비밀 키 파일
User morris # github.com 계정 명
사용방법
github.com에 Repository 정보에서 Code
를 클릭하면 HTTPS
, Github CLI
, SSH
의 세 가지 Clone 용 주소가 보인다. 이 중에서 SSH 방식을 선택하고 사용하면 된다.
SSH를 이용하는 포맷은 다음과 같다.
format : git@github.com:<account name>/<repository name>.git
Sample : git@github.com:ccambo/ImageCDN.git
그런데 SSH Config를 구성할 때 다음과 같이 Host Name을 구성했다.
github.com-<account name>
따라서 Repository를 Clone 할 떄나 Remote Add 를 수행할 떄 Repository URL은 다음과 같이 구성되어야 한다.
format : git@<ssh config에 정의한 HOST 명>:<account name>/<repository name>.git
Sample : git@github.com-ccambo:ccambo/ImageCDN.git
신규로 Clone
$ git clone git@github.com-ccambo:ccambo/ImageCDN.git
신규로 Remote Repository 추가
$ git remote add origin git@github.com-ccambo:ccambo/ImageCDN.git
이전 Remote Repository 변경
$ git remote set-url origin git@github.com-ccambo:ccambo/ImageCDN.git
참고 자료
'개발 > 기타공통' 카테고리의 다른 글
[CentOS - NFS] CentOS 8에 NFS 설정 및 테스트 (0) | 2020.12.31 |
---|---|
[Git] macOS에서 현재 상태로 원격 저장소 재 구성하기 (0) | 2020.12.29 |
[Yarn] Yarn 과 Npm 비교 (0) | 2020.12.20 |
[Opencensus - Trace] Opencensus를 이용한 gRPC Global Tracing (0) | 2020.12.20 |
[Opencensus - Trace] Opencesus를 활용한 Trace 정리 (0) | 2020.12.19 |
- Total
- Today
- Yesterday
- ssh
- custom resource
- operator framework
- Galera Cluster
- zookeeper
- CentOS
- CentOS 8
- Node
- Packages
- SolrCloud
- Kubernetes
- 쿠버네티스
- Kudo
- provisioner
- macos
- opencensus
- Cluster
- collection
- dynamic nfs client provisioner
- k8s
- NFS
- GIT
- Replica
- leader
- kudo-cli
- terrminating
- KUBECTL
- docker
- galera
- operator
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |