본문 바로가기
CODE/Git

[Git] 한 컴퓨터에서 github 여러 계정 사용하기

by Nuridal_class 2023. 8. 30.
728x90
728x90

 한 컴퓨터에서 git 계정 2개이상 사용a하기

개발을 하다보면 한 컴퓨터에서 git 계정을 바꿔가면서 코드를 정리하거나 사용할때가 있는데
오류 발생
remote: Permission to ---저장해야할 A.repo.name--- denied to 먼저 저장되어있던 ---B.repo.name---
fatal: unable to access ---repo address--- The requested URL returned error: 403
이러한 오류가 환영해줄때가 많다.
이떄 간단하게 할 수 있는 방법을 포스팅 했었는데 아래는 참고하면 됩니다.
 

[Git error] remotePermission to user/repo denied to user/other-repo

Git 계정을 여러개를 사용할때 git push 오류 필자도 회사 git 계정과 개인 git 계정을 따로 쓰기 때문에 개인 git 계정으로 코드를 작성하고 git push를 할때 denied 오류가 발생하면 아주 골치가 아플때

nuridal-class.tistory.com

그러나 이 방법이 너무 번거롭다면! 
ssh key를 사용해서 2개 이상의 계정을 사용하면서 개발을 할 수 있는 방법에 대해서 알려드리겠습니다.

1. ssh key 생성하기

💡 이제부터 github B계정은 등록이 되어있고 A계정을 새로 사용하고 싶다는 가정하게 포스팅하겠습니다.
먼저 git bash를 실행한 후 아래와 같은 명령어를 입력해줍니다.
cd ~./ssh
ls -al
만약 폴더가 없다면 mkdir .ssh 로 만들어줍니다.
total 17
drwxr-xr-x 1 nuridal 197121 0 Aug 30 12:13 ./
drwxr-xr-x 1 nuridal 197121 0 Aug 30 12:13 ../
-rw-r--r-- 1 nuridal 197121 2590 Aug 30 12:20 id_rsa_B
-rw-r--r-- 1 nuridal 197121  563 Aug 30 12:20 id_rsa_B.pub
이미 B 계정을 생성했다는 가정하에 파일들이 이미 생성되어 있을 겁니다.
그렇다면 대부분 주로 사용하거나 처음 사용한 계정의 key일 겁니다.
불안하시면 삭제하고 다시 진행하셔도 됩니다.

다음은 등록해야 하는것이 A계정이므로 이메일과 ssh key 이름을 차례로 입력합니다.
ssh-keygen -t rsa -C "A-account@gmail.com" -f "id_rsa_A" 명령어를 입력해 ssh key를 생성합니다.
$ ssh-keygen -t rsa -C "A-account@gmail.com" -f "id_rsa_A"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
//📲 비밀번호를 설정하겠느냐는 질문 (엔터로 넘어가도 됩니다. 나중에 다시 설정 가능합니다.)
Enter same passphrase again:
//📲 비밀번호 재확인 문장 (역시나 엔터로 넘어가줍니다.)
Your identification has been saved in id_rsa_A
Your public key has been saved in id_rsa_A.pub
The key fingerprint is:
SHA256:LzMMAttzd8mH6egvHxfTeWntbTMc28I2jeS6ba72Nkk A-account@gmail.com
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|  .              |
|   +     . + . .o|
|  . + o S * + ++o|
|     + + = . *E==|
|        * + ..B**|
|       ..+ o.+=+o|
|        .+o.+B+. |
+----[SHA256]-----+


결과값
$ ls -al
total 22
drwxr-xr-x 1 nuridal 197121    0 Aug 30 12:20 ./
drwxr-xr-x 1 nuridal 197121    0 Aug 30 12:13 ../
-rw-r--r-- 1 nuridal 197121 2590 Aug 30 12:15 id_rsa_A
-rw-r--r-- 1 nuridal 197121  563 Aug 30 12:15 id_rsa_A.pub
-rw-r--r-- 1 nuridal 197121 2590 Aug 30 12:20 id_rsa_B
-rw-r--r-- 1 nuridal 197121  563 Aug 30 12:20 id_rsa_B.pub
아래와 같이 나왔다면 ssh키를 정상적으로 생성한 것입니다.
💡id_rsa_A : 개인키 이므로 보여지면 안되고 본인만 알고 있어야 합니다.
     id_rsa_A.pub : 공개키 이므로 이 pub 키를 github에 올려서 사용할 것입니다.

 

1-1. ssh-agent 에 생성한 ssh-key를 추가하기

[실행] > ssh-agent 입력하여 실행합니다. 자동으로 켜지고 꺼집니다. 
그 다음은 git bash에 eval "$(ssh-agent -s)" 명령어를 입력합니다.
$ eval "$(ssh-agent -s)"
Agent pid 1809
이때 pid 값은 계속 바뀌니 상관없이 진행하면 되겠습니다.
다음은 ssh-add ~/.ssh/id_rsa_A, ssh-add ~/.ssh/id_rsa_B 명령어로 ssh-agent에 추가해줍니다.
추가 되었다면 ssh-add -l 명령어로 추가가 잘 되었는지 확인합니다.
$ ssh-add ~/.ssh/id_rsa_A
Identity added: /c/Users/nuridal/.ssh/id_rsa_A (A-account@gmail.com)

$ ssh-add ~/.ssh/id_rsa_B
Identity added: /c/Users/nuridal/.ssh/id_rsa_B (B-account@gmail.com)

$ ssh-add -l
3072 SHA256:LzMMAttzd8mH6egvHxfTeWntbTMc28I2jeS6ba72Nkk A-account@gmail.com (RSA)
3072 SHA256:0eT6nshwCVxDo+fTlPiYyEiqPPYNIr1suIyQloa4wyc B-account@gmail.com (RSA)

 

2. github에 ssh-key 등록하기

github에서 프로필을 클릭 > [Settings] > [SSH and GPG keys] > [New SSH key] 순서대로 클릭합니다.
그 뒤에는 Title, Key type, Key를 순서대록 입력합니다.
✍️Title: key의 이름을 정합니다.
✍️Key type: 인증이 목적이므로 Authentication Key로 설정합니다.
✍️Key: id_rsa_A.pub를 그대로 복사해서 가져옵니다.
key를 복사하는 방법은 cat 명령어로 확인하고 ctrl+v 해서 가져옵니다.
$ cat id_rsa_A.pub
ssh-rsa AAAAB3NzaC.....​

github add SSH key

Add SSH key 버튼까지 누르면 아래 사진과 같이 표시가 될 것입니다.

ssh key add result

 

3. ssh config 설정하기

마지막으로는 ssh 서버에 연결할때 옵션을 설정해주어야 오류가 없이 사용할 수 있습니다.
이때 ~/.ssh 폴더 아래에 config 파일이 있어야 하므로 만들어 줍니다.
명령어 code config 로 vscode을 열어서 작성해줍니다.
$ cd ~/.ssh
$ code config​

들어갈 내용은 다음과 같습니다.
✍️Host: ssh 연결시 사용할 대표이름을 정합니다.
✍️Host Name: github의 주소입니다.
✍️User: github의 사용자 아이디입니다.
✍️IdentityFile: 개인키가 있는 경로를 입력합니다.

Host github.com-A
    HostName github.com
    //📲 본인 실제 사용하는 github에 아이디를 작성
    User A-account
    IdentityFile ~/.ssh/id_rsa_A

Host github.com-B
    HostName github.com
    User B-account
    IdentityFile ~/.ssh/id_rsa_B

마지막으로 ssh config 설정이 잘 되었는지 확인하기 위해 아래의 명령어로 확인해 봅니다.

$ ssh -T git@github.com-A
The authenticity of host 'github.com (20.200.245.247)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
//📲 이 부분은 yes를 입력함으로 넘어갈 수 있습니다.
Hi A-account! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@github.com-B
Hi B-account! You've successfully authenticated, but GitHub does not provide shell access.

이렇게 Hi A-account! You've successfully authenticated, but GitHub does not provide shell access
라는 문구가 뜨면 정상적으로 ssh연결이 된 것입니다.
이제! 두 계정을 번갈아가면서 편하게 개발이 가능해졌습니다.!!

 

4. ssh로 github 사용하기

이제는 remote repo를 clone할 때 https가 아닌 ssh로 clone을 받을 수 있습니다.
기본 경로는
$git clone git@github.com:[git 계정]/[repo 이름].git 입니다.
예를 들어 전에 포스팅했던  http-REST-API를 ssh로 받아보겠습니다.

ssh git clone

이제 원하는 폴더에 git clone를 해서 확인해보고 작업후에 push도 해보시면 되겠습니다.
💡만약 처음에 만드시는 분들이라면 1~3번까지의 과정을 상황에 맞추어서 2번 진행하시면 됩니다.

이제 개발시에 개인용과 회사용 2개의 계정을 쉽게 사용할 수 있는 방법에 대해서 알아보았습니다.
이번 포스팅으로 많은 초보 개발자분들께 도움이 되었으면 좋겠습니다.
개발이 쉬워지는 그날까지!!!

728x90
300x250