서로 다른 두 개의 계정을 사용하는 방법을 알아보겠습니다.

개인용 노트북에서 작업을 해야 하거나 업무와 관련된 작업을 할 때,

깃에서 두 개의 계정을 사용하면 깃이 꼬이는 문제를 해결할 수 있습니다.

이 문제를 해결하기 위해 많은 블로그에서 도움을 받을 수 있지만,

제가 직접 겪었던 어려움과 혼란스러웠던 부분을 블로깅해보고자 합니다.

저는 윈도우 컴퓨터를 사용하고 있으며, 윈도우 기준으로 작성하겠지만 파일 디렉토리 주소 말고는

윈도우와 맥이나 리눅스 등 다른 운영체제에서도 큰 차이가 없을 것으로 생각됩니다.

 

 

1. 먼저 터미널이나 git bash를 실행한다.

처음 실행하면 나오는 화면

 

 

 2. 명령어를 입력하여 ssh 폴더로 들어간다.

cd ~/.ssh

.ssh 폴더로 들어가는 명령어

 

 

 

3. ssh 인증키를 생성

 

인증키를 생성하는 방법은 두 가지가 있다. 

"ed25519" 또는 "rsa" 알고리즘을 사용하며, 공개 키를 등록하고 개인 키를 로컬 컴퓨터에 보관하여 사용하는 방법이다.

포스팅에서는 rsa 알고리즘을 사용하여 생성할 것이다.

 

ssh-keygen -t rsa -C "첫번째계정Email@example.com" -f "첫번째계정ID"

 

이때 들어가는 email 과 userId는 첫번째로 등록할 계정의 email과 userId를 입력하면된다.

userId는 깃헙의 id를 따를 필요없고, 본인이 알아볼 수 있는 id 면 된다.  

아래 명령어가 뜨게 되는데 암호를 입력하라는 메세지이다. 

암호를 입력 할 수 있지만 개인적으로 사용할거라 나는 암호없이 진행하였다. 

enter passphrase (empty for no passphrase):_ 에서 enter를 눌러주면

enter same passphrase again:_ 이 작성되고 이때 enter를 한번 더 눌러준다.

(암호는 나중에 따로 추가할수있음)_

 

 

 

4. ssh 키가 생성되면 화려한 이모티콘이 뜬다. 이제 첫 번째 ssh 키 생성이 완료되었다.

첫번째 ssh 키 생성 완료. 

정말 생성이 되었는지 확인해보자.

 

명령어 입력

ls -al 

위 처럼 id_rsa_acrosspace 파일과 id_rsa_acrosspace.pub 파일이 두개 생성됐다. 

 

 

혹시 bach나 터미널 말고 ssh폴더를 직접 들어가서 확인해보고 싶다면 

윈도우 기준 내 pc -> c: 드라이브 -> 사용자 -> PC -> .ssh 폴더에 들어가면 된다.

(사용자마다 디렉토리 주소는 다를수있으므로 본인의 디렉토리 구조에 맞춰서 들어간다)

ssh 키 1개 생성 완료.

 .pub 확장자가 붙은 파일이 공개키고 붙지 않은 파일이 개인키이다.

 

똑같은 방법으로 두번째 사용할 계정도 생성해준다.

1, 2번 ssh키 생성 완료

 

id_rsa_acrosspace , id_ras_seo0 두개의 ssh 키 생성 완료

 

 

 

5. ssh-add 명령어를 사용하여 ssh-agent에 ssh를 등록한다.

 

이제 ssh-agent에 사용할 ssh를 등록할건데, 이과정을 왜하냐면

ssh를 사용하여 로그인하거나 원격 서버에 연결할 때,

매번 암호를 입력하는 것은 불편하고 보안 문제도 있을 수 있다.

이러한 문제를 해결하기 위해 암호를 한번 입력하면,

해당 암호를 기억하고 다시 입력하지 않아도 되도록 에이젠트가 만들어준다.

ssh-agent를 실행하고 설정된 환경 변수를 이용하여 SSH 키를 추가하거나 제거할 수 있도록 준비하는 것이다.

 

 

에이젠트 실행 명령어

eval "$(ssh-agent -s)"  
 
ssh-agent를 환경변수로 설정하며 ssh를 추가할 수 있게 해주는 명령어이다.
 아래처럼 출력되면 정상적으로 실행이 된것이다.

 

 
 

6. 이제 만들어놓은 ssh 키를 추가해보자.

첫번째 계정

ssh-add ~/.ssh/id_rsa_acrosspace

두번째 계정

ssh-add ~/.ssh/id_rsa_seo0
추가완료!

 

 

7. 이제 해야할일은 github에 ssh를 사용할 수 있도록 ssh key를 추가해주어야 한다.

 

첫번째 계정부터 추가해보자. 

첫번째 계정 github 로그인후 settings 를 들어간다.

 

ssh and gpg keys 에 들어간다.

New ssh key를 눌러준다. 

title과 keytype, key를 입력하는 섹션이 나온다.

등록할 SSH 키에 대한 제목으로 해당 키가 어떤 용도로 사용되는지 쉽게 지정하는 것이 좋다.

예를 들어, "my personal key" 또는 "work key" 등으로 지정할 수 있다.

 

다음 키타입을 선택해야하는데 

 

Authentication key와 Signing key는 각각 SSH 인증과 Git 커밋 서명을 위한 키이다.

이 두 가지 키는 목적이 다른데 우리는 위에서 rsa 알고리즘으로 ssh 키를 생성했기때문에

authentication key 를 설정해준다.

rsa 알고리즘은 여전히 안전한 알고리즘이지만, 최신 ed25519 알고리즘보다는 덜 안전하다고는 한다. 

하지만 나는 개인적으로 사용할 목적이고 ssh 키가 노출되어도 큰 문제가 되지 않기때문에 rsa로 진행하겠다.

 

 

해당 ssh pub키를 복사하기위한 명령어 실행

code ~/.ssh/id_rsa_arosspace.pub(첫번째 ssh 키 id) 

명령어를 작성하면 vscode가 실행된다.

 

ssh-rsa.pub 전체를 다 복사한다. 

 

add ssh key를 눌러서 키를 추가해준다.

첫번째 계정에 ssh keys 추가 완료.

 

두번째 계정도 똑같은 방법으로 로그인 후 ssh key를 추가해준다.

 

두번째 계정에 ssh keys 추가 완료.

 

 

 

8. 설정을 간편하게 유지하기위해서 ssh config 파일을 만들어준다. 

 

config 파일을 생성할땐 중요한게 반드시 .ssh 폴더 안에서 만들어줘야한다. 

위치가 ~/.ssh 로 되어있지않다면

 cd ~/.ssh
명령어를 사용하여 .ssh 폴더로 들어가준다.
 
 
아래의 명령어를 통해 vs.code에 config 파일을 생성한다. 
code config
 

 

 

 

9. 계정을 설정해준다.

 

config 파일에 작성해야할 txt내용

# Account 1 (acrosspace) 첫번째 계정
Host github.com-acrosspace
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_acrosspace

# Account 2 (seo0) 두번째 계정
Host github.com-seo0
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_seo0
 
  • 2, 8 라인 SSH 연결에 사용될 대표이름
    Host에 대한 값이 중요, 나중에 ssh로 연결할 때 Host 지시자에 지정된 값이 사용되니 구분하기 쉽고 기억하기 편리한 이름으로 작성한다.
  • 3, 9 라인 : github의 도메인
  • 4,10 라인 : github 사용자 아이디
  • 5, 11 : 앞서 생성한 개인키 경로

 

여기까지 진행했다면 .ssh 폴더에는 

위에서 만든 첫번째, 두번째 계정의 공개키, 비공개키, 4개와 config 파일이 만들어져 있을 것이다.

 

 

 

 

10. SSH 키가 연결이 잘되었는지 확인해준다.

 

확인 명령어

ssh -T git@github.com-acrosspace 

아래와 같은 메세지가 발생 할 수 있다.

이 메시지는 처음 GitHub에 연결할 때 일반적으로 발생하는 경고로

GitHub 서버의 공개키가 로컬 시스템의 known_hosts 파일에 없기 때문에 발생한다.

GitHub 서버를 신뢰한다면, "yes"를 입력하고 Enter 키를 눌러주면 된다.

Hi seo0y! You've successfully authenticated, but GitHub does not provide shell access. 메세지가 출력했다면

정상적으로 등록이 된것이다.

앞에 출력되는 Hi seo0y! <= 여기서 seo0y는 내 githubId,

 

두번째 계정도 마찬가지로 연결이 잘되었는지 확인해준다.

 

여기까지 진행했다면 다 끝났다.

 

 

 

11. ssh로 clone을 받아보자. (개인계정 레파지토리)

 

각 레포지토리마다 ssh 주소가 있을것이다.

원래는 https 프로토콜로 clone을 받았지만 ssh 등록을 해주었다면 이제부터는 ssh로 clone을 받아야한다. 

개인계정 레파지토리

주소를 살펴보면 

git@github.com:seo0yoon/JS_Algorithm.git 이 형태인것을 볼 수 있다. 

여기서 중요한게 반드시 clone을 받을 때는 

git clone git@github.com-userA:userA/userA-test.git 형태로 바꾸어 clone을 받아야한다.

 

위의 config 파일에 등록해놓았던 Host 부분의 대표이름을 넣어주면된다.

예 ) git clone git@github.com-seo0:seo0/JS_Algorithm.git

현재 디렉토리 주소가 ~/.ssh 폴더라면 폴더를 나와 Desktop으로 들어간 다음 바탕화면에 clone을 받으면 된다.

 

폴더 생성 모습

 

 

 

12. 마지막으로 두개의 계정이 꼬이지않고 정상적으로 push 가 되는지 확인해보자.

 

clone받은 폴더로 들어가서 readme.md 파일을 수정해주었다.

계정 권한문제로 속썩이지않고 잘 push 되는것을 볼 수 있다.

 

위랑 동일 한 테스트 계정 테스트 (회사계정 레파지토리)

ssh 로 clone 받아준다.

회사 계정 레파지토리
readmd.md 수정
push 완료

 

 

 

혹시나

commit 했을때 나오는 아래의 계정 정보를 수정하고 싶다면

로컬과 전역의 git 사용자 이름과 메일을 둘 다 확인한 후 변경해주면 된다.

 

위의 계정 정보

 

로컬과 전역의 git 사용자 이름과 메일을 둘다 확인해준다.

 

로컬 git 사용자 확인방법

git config user.name 

git config user.email

 

로컬 git 사용자 정보를 변경하고싶을때

git config user.name "변경할이름"

git config user.email "변경할이메일"

 

전역 git 사용자 확인방법

git config --global user.name

git config --global user.email

 

전역 git 사용자 정보를 변경하고 싶을때

git config --global user.name "변경할이름"

git config --global user.email "변경할이메일"

 

위와 같은 방법을 사용하여 git 사용자 정보를 변경할 수 있다.

복사했습니다!