기타 개발관련

깃헙 계정 2개를 한 컴퓨터에서 분리하여 사용하는 방법

나른한코딩 2022. 7. 18. 14:56

 

 

 

깃헙 계정이 여러개 있는데, 한 아이디로 밖에 Clone이나 Push가 안되는 경우를 경험한 적이 있으신가요??


.

.

.

.

 

 

 

우리가 깃헙 상에 즉 쉽게 말해서 인터넷 상에 올려놓은 공간을 원격

내 컴퓨터에 저장해 놓은 공간을 로컬 이라고 부릅니다.

 

이 로컬 개발 환경에서 Git을 단독으로 사용한다면 SSH가 없어도 괜찮습니다.

하지만 여러개를 사용한다면,

안전성을 보존해야하므로 외부 Git 서버에서 코드를 Clone하거나 Push할때 SSH 프로토콜을 사용합니다.

 

깃헙처럼 인터넷을 통해 원격에서 Git 저장소를 호스팅해주는 서비스에서도 SSH 프로토콜을 지원하고 있고,

원격 저장소와 통신할 때 일반적으로 사용하는 방법입니다.

 

 

 

SSH란?

Git에서도 사용하지만, 원래는 멀리 떨어져있지만 인터넷이나 네트워크를 통해 연결되어있는 컴퓨터에 안전한 연결을 해주는 프로토콜로 안전한 쉘(Secure Shell)이라고도 합니다.

쉘을 통해서 명령어를 입력하고, 이 명령어를 내 컴퓨터가 아닌 네트워크로 다른 컴퓨터에 전달해주고 결과를 받아볼 수 있게 해주는 게 바로 SSH입니다.

포인트는 바로 안전(Secure)한 방식으로 통신한다 입니다.

 

SSH는 사용자, 패스워드나 여러가지 인증 방법을 지원합니다.

그 중에서도 편리성이나 안정성 면에서 추천하는 방식이 공개키 인증 방식입니다.

 

 

 

사용 방법은?

공개키 인증 방식을 사용하려면 공개키와 개인키를 한 쌍 만들어야합니다. 

- 공개키: 접속하고자 하는 서버에 등록해 놓는 용도로 사용

 

이름에서 알 수 있지만 공개키는 외부에 공개되어도 상관이 없습니다.

 

사용자는 개인키를 통해서 SSH에 접속하고, 연결 요청을 받은 SSH 서버에서는 서버에 등록된 공개키 중에 요청 받은 개인키 정보와 매치가 되는 공개키가 있는지 찾습니다.

없을 경우 : 서버 접속(인증)에 실패

등록된 공개키가 있는 경우 : 인증에 성공하고 서버에 접속 가능

 

- 공개키 : 어디에 공개되어도 문제가 없다.
- 개인키 : 비밀번호와 마찬가지로 반드시 나만 접근할 수 있도록 안전하게 보관 해야한다. (절대 노출 금지)

 

 

 

이유는?

개인키를 가진 누군가가 내가 공개키를 등록해 놓은 SSH 서버나 Git 서버에 마음대로 접속할 수 있기 때문입니다..!

 

 

 

 


 

 

 

본격적으로 두 계정을 하나의 컴퓨터에서 사용할 수 있게 설정하는 방법에 대해서 알려드리겠습니다ㅎㅎ

아래의 코드를 터미널에서 순서대로 작성하시면 됩니다.

 

편의상 회사계정(company)개인계정(personal)을 하나의 컴퓨터 안에서 분리해서 사용하고자 하는 상황을 예를 들겠습니다.

 

 

1) SSH key 생성하기

// .ssh 폴더 만들기
mkdir ~/.ssh



// 폴더로 이동하기
cd ~/.ssh



// 개인용 ssh key 만들기
ssh-keygen -t rsa -C “깃헙이메일@email.com” -f “personal”



// 파일 생성 여부 확인
ls -l


// 회사용 ssh key도 똑같이 생성

ssh-keygen -t rsa -C “깃헙이메일@email.com” -f “company”



// 파일 생성 여부 확인

ls -l

(뒤에 .pub 확장자가 붙은것은 public key)

 

 

 

2) config 파일 생성 및 작성

// ssh config 설정
vim config


// 안에 아래와 같이 작성
Host github.com-personal // 개인 계정
	HostName github.com
	User 개인깃헙이메일@email.com
	IdentityFile ~/.ssh/personal

Host github.com-company // 회사 계정
	HostName github.com
	User 회사깃헙이메일@email.com
	IdentityFile ~/.ssh/company



// 저장 종료
esc + :wq

(* 두개의 호스트를 만들어 접속하는 계정에 따라 인증키로 참조)

 

 

3) SSH agent 등록

// ssh agent 등록
ssh-add personal // 개인 계정 등록
ssh-add company // 회사 계정 등록


// 잘 등록되었는지 확인
ssh-add-l

 

 

4) 깃헙에 public key 등록하기
(* .pub 확장자 파일 내용 전체를 복붙할 것. ssh-rsa로 시작해서 내가 설정한 이메일로 끝난다.)

깃헙 사이트 방문 > 프로필 > Setting > SSH and GPG keys > New SSH key


 

5) 레포를 clone 받을 때

  • SSH 을 누르고 주소 복사
    (* 기본 경로 git@github.com:[user]/[저장소])
  • 기본 경로를 내가 지정해준 Host 명으로 바꾸어 클론
    ex) git@github.com-personal:[user]/[저장소]

(* 여기서 파란 부분이 위에 2번에서 작성한 Host 명입니다. 원하시는 대로 커스텀 하여 사용하시면 됩니다.)

 

 

6) 특정 폴더(디렉토리)에서 특정 계정을 사용할 수 있게 분리하고 싶을 때

예를 들어 Personal, Company 라는 폴더를 만들어 두고,

  • Personal 에서는 개인계정으로 커밋 및 푸시
  • Company에서는 회사계정으로 커밋 및 푸시

가 되도록 하고 싶다면!

 

// 특정 폴더에서는 특정 계정을 사용할 수 있게 분리하고 싶을 때
vim ~/.gitconfig


// 아래와 같은 내용 추가
[includeIf “gitdir: ~/특정디렉토리경로”]
path = .gitconfig-company


// 위의 path 이름으로 된 gitconfig 파일 생성하기
vim ~/.gitconfig-company


// 아래의 내용 입력
[user]
name = 계정이름
email = 계정 이메일

// 저장
esc + :wq

 

(*여기서의 계정은 특정 디렉토리에서 분리해서 사용할 계정의 이름과 이메일. gitconfig 에 작성된 것 이외의 계정.)

 

 

 

반응형