Settings/Git

Git 여러 계정 사용하기

Juzdalua 2022. 1. 13. 17:53

회사계정, 개인계정을 하나의 컴퓨터에서 사용하다보면 repository에 접근하기가 어려워진다.

이를 위한 해결책은 bash에서 ssh key를 이용한 방법이 있다.

 

1. rsa 키 만들기

ssh-keygen -t rsa -C "깃헙계정@email.com" -f id_rsa_사용자명

회사계정, 개인계정 모두 만든다. 

그럼 아래와 같은 이상한 이미지가 나온다.

rsa 키는 'id_rsa_username'과 'id_rsa_username.pub' 두가지가 만들어진다.

~/.ssh 폴더 아니면 bash의 경로에서.

 

2. rsa 키 등록하기

ssh-add id_rsa_username

키가 위치한 bash에서 위 명령어를 수행한다.

 

could not open a connection to your authentication agent

위와 같은 에러가 난다면, 아래 명령어를 입력한다.

 

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa_username

 

3. ssh 등록하기

vim ~/.ssh/config

# Juzdalua
Host github.com
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_juzdalua_window

config 파일을 수정해야한다. 없으면 생성하자.

- host명은 접속할 ssh 명을 구분할 수 있다.

** 원격접속 할 일이 있을 때는 도메인을 지정한다.

- User는 git으로 고정한다.

** 원격접속 할 일이 있을 때는 해당 사용자명을 지정한다. 

ex) AWS ec2 인스턴스는 ubuntu

- IdentityFile은 키가 저장된 위치를 지정한다.

** AWS 원격접속 할 일이 있을 때는 pem 키가 저장된 위치를 작성한다.

 

4. github 계정에 ssh키 등록하기

github에 로그인하고 settings에 들어간다.

 

좌측 SSH and GPG keys에서 제일 처음 ssh키를 등록한다. 

키는 id_rsa_username의 내용을 전부 복사 붙여넣기 하면 된다.

notepad로도 열리니 걱정하지 마셈.

이렇게 개인계정, 회사계정 모두 똑같은 절차를 마친다.

 

5. bash에서 확인하기

현재 사용자명을 확인하고 사용자명을 바꿔보았다.

git config --global user.email git@email.com

user.name과 user.email을 같이 바꿔줘야된다.

user.name만 바꾸고 comming과 push를 했더니 사용자가 바뀌지 않았다.

 

6. repository clone

이제는 ssh를 이용해 클론해야한다. 

git clone 붙여넣기

 

7. 재부팅 할때마다 등록해야하는 키 영구등록하기

ssh-add 명령어를 사용하면 재부팅할때마다 해야되서 너무 귀찮다.

#등록된 키 확인
ssh-add -l

이제 영구적으로 등록해보자.

 

sudo ssh-add -K "key"

ex) sudo ssh-add -K ~/.ssh/id_rsa

하지만 재부팅을 하면 새로 키를 등록해야했다.

 

그래서 찾은 방법. 이건 잘 되는 것 같다.

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

/.ssh/config 파일에 위 항목을 추가해뒀다. 

회사용, 개인용 계정 두가지 모두 추가했다.

일단 지금은 비밀번호를 묻지 않고 잘 작동한다.

 

**) 여러 계정을 사용할 경우

ssh-add -D로 등록된 키를 해제하고 ssh-add ~/.ssh/id_.... 새로 등록한다.

키에 맞는 계정으로 이름과 메일을 변경한다.

# Add
git config --global user.name USERNAME
git config --global user.email EMAIL

# Remove
git config --global --unset user.name USERNAME
git config --global --unset user.email EMAIL

# Check
git config --list

번거롭지만 현재는 이렇게 사용중이다.