Home 컴퓨터 한대로 github 여러 계정 사용하기
Post
Cancel

컴퓨터 한대로 github 여러 계정 사용하기

컴퓨터 한 대에서 github 계정을 여러개 사용하다 보면 불편한 것이 이만저만이 아닙니다.
ssh를 이용해서 host를 변경하고 키를 자동으로 인식하게 하면 너무나 편리하게 여러 계정을 사용할 수 있군요.



여러 계정 설정하기


ssh를 사용하여 github을 사용합니다. 계정별로 ssh key를 만들고 자동 로그인하도록 설정할 것이기 때문입니다.
ssh에 대해 자세히 보시려면 SSH Home Page를 참고하세요~
적용하는 절차는 다음과 같습니다.

  1. ssh key 생성
  2. ssh config 설정
  3. ssh agent에 등록
  4. github에 public key 등록
  5. git clone 받기


ssh key 생성

  • 홈디렉토리 아래에 .ssh 디렉토리를 생성합니다. 반드시 앞에 .을 붙여야 합니다.
  • 생성한 .ssh 디렉토리로 이동합니다.
  • ssh-keygen -t rsa -C [github 이메일 계정] -f [생성될 key 파일] 형식으로 키를 생성합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "git1@email.com" -f "git1"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):   <- 여기서 그냥 엔터를 칩니다. 패스워드 입력을 하지 않아도 됩니다.
Enter same passphrase again:                  <- 여기서 그냥 엔터를 칩니다. 패스워드 입력을 하지 않아도 됩니다.
Your identification has been saved in git1
Your public key has been saved in git1.pub
The key fingerprint is:
SHA256:OJPEtuo4rR+O2b2iR/c0aomeMw3M/x+NDHUSSeqGCGM git1@email.com
The key's randomart image is:
+---[RSA 3072]----+
|         .o.     |
|     .   ...     |
|  E   + . o .    |
| . o + * . o     |
|   o. B S        |
|    =..+oo o     |
|   oo* = .+ .    |
|  .BB+* .  .     |
|  *BB=oo...      |
+----[SHA256]-----+

위와 같이 메세지가 나타나면 잘 만들어 진 것입니다.
생성된 파일을 확인해 봅시다.

1
2
3
4
$ ls -l
total 16
-rw-------  1 iam  geni  2602 12 29 13:44 git1
-rw-r--r--  1 iam  geni   568 12 29 13:44 git1.pub

위와 같이 두개의 파일이 생성되어 있습니다. git1은 private key이고, git1.pub은 public key입니다.
잘 생성되었다면, 2번도 만들어 봅시다.

1
$ ssh-keygen -t rsa -C "git2@email.com" -f "git2"

첫번째와 동일한 방법으로 만듭니다. 패스워드는 생성하지 맙시다~ 귀찮아져요.😅
다시 파일 목록을 보면 git2, git2.pub 파일도 만들어져 있을 겁니다.


ssh config 설정

텍스트 편집기를 사용하여 config파일을 만들고 안에 아래 내용을 입력합니다.

1
2
3
4
5
6
7
8
Host github.com-git1
        HostName github.com
        User git1@email.com
        IdentityFile ~/.ssh/git1
Host github.com-git2
        HostName github.com
        User git2@email.com
        IdentityFile ~/.ssh/git2

위 내용을 보시면, 두개의 새로운 host를 만들었습니다. 첫번째는 github.com-git1이고, 두번째는 github.com-git2입니다. ssh 사용 시 Host명을 이렇게 주게 되면 해당하는 HostName으로 접속하고, User 부분의 계정을 사용하며, 인증키로 IdentifyFile을 참조하게 됩니다.
따라서, 두개의 새로운 Host를 만들고 접속하는 계정을 이곳에서 설정하는 것이 되겠습니다.


ssh agent에 등록

생성된 key는 ssh agent에 등록을 해 줘야 동작합니다. 아래와 같이 두개를 모두 등록해 줍시다.

1
2
3
4
5
6
$ ssh-add git1
Identity added: git1 (git1@email.com)

$ ssh-add git2
Identity added: git2 (git2@email.com)

두개가 잘 등록 되었군요. agent에 등록된 내용을 다시 확인해 봅시다

1
2
3
$ ssh-add -l
3072 SHA256:OJPEtuo4rR+O2b2iR/c0aomeMw3M/x+NDHUSSeqGCGM git1@email.com (RSA)
3072 SHA256:Nyn0lufvrcYw2sMSMEcE1/uA7D2eQKD9ljltcJCdI1M git2@email.com (RSA)

음.. 뭔가 복잡한 것이 나오지만, 뒤에 제가 입력한 이메일이 잘 보이는 군요.
이제 터미널에서 할 작업은 끝났습니다. 컴퓨터를 리붓해도 계속 적용될 것입니다.

참고 : 리붓 후에 ssh-add -l명령으로 확인해 보면 아무것도 안 나옵니다. 그러나 잘 작동합니다.


github에 public key 등록

git1.pub 파일을 열어보면 이상한 문자들이 잔뜩 있습니다. 이를 모두 복사해 둡니다. github에 로그인하여 아래 그림처럼 Settings > SSH and GPG keys를 클릭하고 들어갑니다.

github 멀티 로그인 #1


그러면 아래와 같이 화면이 나오게 되고, New SSH key 버튼을 클릭합니다.

github 멀티 로그인 #2


Key 부분에 앞에서 복사한 public key를 붙여넣어 줍니다. title은 아무거나 입력해도 됩니다.

github 멀티 로그인 #3

key는 반드시 .pub 확장자가 붙어 있는 파일의 내용 전체를 복사해서 넣어줍니다. ssh-rsa로 시작해서 내가 설정한 이메일로 끝나게 되어 있습니다.
이제 Add SSH Key 버튼을 클릭하면 등록 절차가 모두 끝나게 됩니다.


git clone 받기

모든 설정이 끝났으니 두 계정으로 소스를 다운받아 봅시다.
clone 받을 때 프로토콜을 HTTPS에서 SSH로 변경해 줍니다. 그리고 복사를 합니다.

github 멀티 로그인 #4

터미널을 열어서 소스를 클론 받습니다.
기본 경로가 git@github.com:[user]/[저장소] 이렇게 표시됩니다.
여기서 git@github.com 부분을, config 파일을 만들 때 정해 준 Host 명인 git@github.com-git1 으로 변경합니다.

1
$ git clone git@github.com-git1:git1/my.git

위와 같이 하면 정상 적으로 다운로드가 완료될 것입니다.
만일, 이미 클론받은 소스가 있다면, 원격 저장소 경로를 아래와 같이 바꿔 줍니다.

1
$ git remode add origin git@github.com-git1:git1/my.git 

두번째 계정도 같은 방법으로 클론 또는 원격 저장소를 변경해 줍니다.


문제 해결


  • 원격지 퍼미션 오류가 납니다.

    이미 세팅이 완료된 상태에서 리붓 후 새로운 계정을 ssh-add 명령으로 등록하면 이전에 설정한 것들이 먹히지 않는 것 같습니다. 모두 ssh-add를 다시 해 주니 정상적으로 되네요. 리붓후에도 등록한 모든 것이 잘 동작합니다. (솔직히 자신 없습니다. 🤣)

  • push할 때 갑자기 아래와 같은 메세지가 나오면서 연결이 되지 않습니다.

    1
    2
    3
    4
    5
    6
    
     $ git push
     ssh: connect to host github.com port 22: Cant assign requested address
     fatal: Could not read from remote repository.
    
     Please make sure you have the correct access rights
     and the repository exists.
    

    아래 내용을 .ssh/config 파일안에 넣습니다. 연결할 계정에 대해 Hostname과 port를 변경해 주면 됩니다.

    1
    2
    3
    
    Host github.com
      Hostname ssh.github.com
      Port 443
    


참조




Jekyll 테마에 utterances 댓글 연동하기

Jekyll 테마에서 구글 검색 노출 등록하기