한 컴퓨터에서 여러 개의 깃허브 계정 사용하기

dante Yoon·2020년 2월 28일
19

github

목록 보기
1/3
post-thumbnail

😀반갑습니다.

👉서론

코딩할때 파일을 어디다가 저장하시나요?
로컬환경에 폴더하나를 만들어 저장할 수도 있지만

공동의 작업을 위해서 작성한 코드를 합치거나 데스크탑에서 작성하던 코드를 원격으로 노트북을 이용해 작업을 이어가고 싶을 때 (너 일 끝나면 코딩 잘 안하잖아) 😂😂😂😂인터넷 공간에 내 코드를 저장하고 싶어지는데요

위에서 말한 코드나 작업과정을 '형상'이라고 하며

이러한 형상을 관리하게 해주는 프로그램을 '형상관리프로그램'이라고 합니다.

널리 알려진 프로그램은 SVN 이나 Git이 있는데요,
저는 깃허브를 사용하고 있습니다.

제가 깃허브를 사용하면서 겪은 문제 중 하나가
한 컴퓨터에서 두개의 계정을 동시에 사용하는 것이었습니다. 🤔

로컬환경에 A, B 두 개의 프로젝트 폴더가 있다고 생각해볼게요.

별도의 설정을 해주지 않고 A 에서 작업을 하다가 갑자기 좋은 아이디어가 생각나 B라는 폴더를 새로만들고 원격저장소를 만들어
깃허브에 푸쉬한다면 A에서 작업을 했을 때의 계정으로 B의 원격 저장소에 커밋 기록이 남을 것입니다. 저는 다른 계정으로 커밋을 하고 싶은데 말이죠.

👉 ssh-key in github?? 이게 모지 ~~ 🤔🤔🤔

이렇게 동일한 로컬환경에서 다른 계정으로 커밋 기록을 남기고 싶을 때
깃허브에서 제공하는 ssh-key 라는 인증수단이 매우 요긴하게 사용됩니다.

앞으로의 작업을 위의 사진을 이용해 간단히 설명해드리려고 하는데요,
먼저 한 컴퓨터에서 두 개의 ssh-key를 생성합니다.

다음 두 과정이 핵심입니다.
1. 👉🏽 ssh-key 1234는 User A의 깃허브계정에 로그인해서,
2. 👉🏽 ssh-key 2345는 User B의 깃허브계정에 로그인해서 저장할 것입니다.

위의 저장하는 과정은 로컬환경이 아닌 깃허브 온라인 사이트상에서의 저장을 의미합니다.

그리고 각각의 프로젝트 폴더에서 원격 저장소의 내용을 클론하거나,
이미 프로젝트가 작성된 폴더에서 원격 저장소를 설정할 때 http 주소를 사용하는 것이 아닌 ssh를 사용할 것입니다.

👉 터미널에서 ssh-key 생성, 루트 , 프로젝트 폴더 단계에서 user 설정해주기

터미널을 띄우고 ssh-key 생성부터 해볼까요?

윈도우 환경은 git , OS X 환경에서는 터미널을 띄우시면 됩니다.

ssh key는

 ~/.ssh/

디렉토리 상에 저장됩니다.

키 생성부터 해보겠습니다.

$> ssh-keygen -t rsa -C "userA@my_email.com" -f "id_rsa_userA"
$> ssh-keygen -t rsa -C "userB@my_email.com" -f "id_rsa_userB"

위와 같이 하면 userA와 userB의 깃허브 계정에 대한 각각의 ssh-key가 생성됩니다. 이때 이메일 계정은 깃허브 로그인할때 사용하는 계정입니다.

	"userA@my_email.com"

생성한 키를 등록해줄게요.

	$> ssh-add id_rsa_userA
	$> ssh-add id_rsa_userB

로컬 터미널에 생성한 ssh-key 적용하기

만들어진 파일을 확인해보면 id_rsa_userA, id_rsa_userA.pub 두 가지를 볼 수 있는데요,
이렇게 만들어진 rsa 파일들을 터미널에서 적용해줘야 합니다.

1. ~/.ssh/config 수정 (없으면 만드시면 됩니다.)
	# Personal account-userA 이건 주석이라 아무 내용이나 적어도 상관없습니다. 
    	Host github.com-userA
		HostName github.com
		User git
        	IdentityFile ~/.ssh/id_rsa_userA
    	# Personal account-userB
        Host github.com-userB
		HostName github.com
		User git
        	IdentityFile ~/.ssh/id_rsa_userB
        
왜 위의 과정을 해줘야 하나요?
Host github.com-userA 의  -userA 부분이 굉장히 중요합니다. 

조금 있다가 리모트 저장소를 ssh 를 사용해서 클론하게 될 것인데요 이때 -userA를 추가해서 클론해야합니다.

2. 프로젝트 폴더 myGithubfolderA와 myGithubfolderB의 .gitconfig에 다음과 같이 각각 적어줍니다. (폴더 B에는 userB라고 적어야겠지요?? )
	[user]
		email = userA@my_email.com
왜 위의 과정을 해줘야 하나요?
프로젝트 폴더 A와 B에서  각각 어떤 user 이메일을 사용할지 로컬환경에게 알려주는 것입니다. 


앞선 작업들이 잘 되었는지 확인해볼까요? 
$> ssh -T github.com-userA
 # Hi USERA! You've successfully authenticated, but GitHub does not provide shell access.
$> ssh -T github.com-userB
 # Hi USERB! You've successfully authenticated, but GitHub does   not provide shell access.

👉 만든 ssh key 깃허브 사이트에 적용해주기

아까 ~/.ssh/ 안에 id_rsa_userA.pub 와 id_rsa_userB.pub 파일을 만들었었죠 ? 각 파일의 내용을 복사하겠습니다.

형식은 대략적으로 다음과 같습니다.

	ssh-rsa  asdfvv4vsvw23 .... 생략 ...== userA@my_email.com

ssh-rsa 부터 이메일 주소까지 모두 복사해줍니다.

이제 깃허브로 가볼게요.

위의 사진과 같이 만들어진 ssh-key를 복사하면됩니다.

깃허브에 적용했으니 우리 로컬환경에도 적용시켜야 할 차례이군요.

	ssh-add ~/.ssh/id_rsa_userA

이제 원격저장소를 로컬로 클론하는 일만 남았습니다.

아래 사진은 ssh를 이용해 원격저장소를 클론하는 모습입니다.
깃허브 클론을 하시면 한번씩은 보셨을 것 같은데요
ssh를 이용해 원격저장소를 클론하는 모습

👉 이제 다 되었습니다!

프로젝트를 처음 만드셨다면 위와 같이 SSH를 이용해 클론하게 될 텐데요,

git@github.com:userA/myprojectuserA.git 와 같은 형식으로 될텐데, 앞서서 ~/.ssh/config 에서 작성한
	Host github.com-userA
의 -userA를 이용해 git@github.com-userA:userA/myprojectuserA.git 를 클론하면 됩니다.
만약, 이미 저장소를 클론한 상태에서 위의 상태를 적용하고 싶다면 set-url 명령어를 사용하면 됩니다.
		git remote set-url origin git@github.com-userA:userA/myprojectuserA.git

오늘은 한 컴퓨터에 여러 개의 깃허브 계정을 사용하는 법을 배워봤습니다.
백문이 불여일타! 한번씩 따라해보시기 바랍니다. 감사합니다 :)


아래 글들을 참조했습니다.
A Practical Guide to Managing multiple github accounts

profile
성장을 향한 작은 몸부림의 흔적들

5개의 댓글

comment-user-thumbnail
2021년 1월 13일

좋은 글 감사합니다

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

이글 덕분에 제가 겪던 문제를 해결했습니다! 감사합니다
분명히 코딩하고 커밋푸쉬 했는데, 잔디밭이 남지 않던 문제였는데요! 좋은 글 감사합니다

1개의 답글
comment-user-thumbnail
2021년 10월 8일

덕분에 잘 해결했습니다. 좋은 글 감사합니다. :)

1개의 답글