2022. 11. 7. 15:30ㆍPost
한 컴퓨터에서 github 계정 여러개 사용하기 - git | UsingU
한 컴퓨터에 여러개의 github를 사용해야 하는데 오류가 발생하는 등 불편함이 있었습니다. SSH Key를 이용해 한 컴퓨터에 여러개의 github 계정을 사용하는 방법을 알아보도록 하겠습니다.
usingu.co.kr
https://stackoverflow.com/questions/7927750/specify-an-ssh-key-for-git-push-for-a-given-domain
위 2개의 글을 짬뽕 한 글 입니다.
먼저 글은, multiple한 계정을 생성 및 세팅까지 하는 글이고,
후자의 글은 커밋시에도 해당되는 내용입니다.
SSH Key를 이용해 한 컴퓨터에 여러개의 github 계정을 사용하는 방법
목차
1. SSH Key 생성하기
github에 사용하는 계정이
userA(사용 email : userA@example.com) ,
userB(사용 email:userB@example.com) 라고 가정을 하고 각 각 SSH Key를 생성하는 과정을 진행합니다.
- Git Bash 를 실행합니다.
- SSH key 를 관리하는 디렉토리로 이동 후 나중에 추가된 SSH 키를 확인하기 위해 기존 파일 목록을 확인합니다.
$ cd ~/.ssh
$ ls -al
3. SSH key를 생성하는 명령을 내립니다. github에서 사용하는 email과 생성될 키 이름을 각각 지정해야 합니다. 먼저 github에 email은 “userA@example.com” 고 SSH키를 “id_rsa_userA” 이름으로 생성합니다. 실행 명령은 다음과 같습니다.
$ ssh-keygen -t rsa -C "userA@example.com" -f "id_rsa_userA"
아래와 같이 프롬프트에 보안 암호를 입력하라는 메시지가 나오면 그냥 Enter를 칩니다. 그러면 암호 입력없이 그냥 사용할 수 있습니다.
4. 3과 동일한 방법으로 userB(email : userB@example.com )의 SSH Key를 “id_rsa_userB” 로 생성하는 명령을 내립니다.
$ ssh-keygen -t rsa -C "userB@example.com" -f "id_rsa_userB"
5. SSH key 가 생성된 것 확인 합니다.
$ ls -al ~/.ssh
표시된 목록에 id_rsa_userA , id_rsa_userA.pub와 id_rsa_userB, id_rsa_userB.pub 파일이 추가된 것을 확인할 수있습니다. .pub 확장자가 붙은 파일이 공개키 파일이고 붙지 않은 파일이 개인키 입니다.
6. ssh-agent에 새로 생성한 SSH key를 추가해 줍니다. 먼저 백그라운드에 ssh-agent 실행시켜 줍니다. 표시되는 pid 값은 매번 달라지니 제시되는 예제라 달라도 문제가 되지 않습니다.
$ eval "$(ssh-agent -s)"
> Agent pid 59566
각각 생성한 userA와 userB의 SSH 개인키를 ssh-agent에 추가해 줍니다.
$ ssh-add ~/.ssh/id_rsa_userA
$ ssh-add ~/.ssh/id_rsa_userB
ssh-agent에 정상적으로 SSH 개인키가 추가되었는지 확인합니다.
$ ssh-add -l
3072 SHA256........userA@example.com (RSA)
3072 SHA256........userB@example.com (RSA)
2. GitHub에 새 SSH 공개키 추가하기
공개키를 각 계정에 추가해 주는 과정을 진행합니다. ~/.ssh/id_rsa_userA.pub 와 ~/.ssh/id_rsa_userB.pub 파일이 공개키 입니다.
- 공개키를 먼저 복사하기 위해 VSCode에서 userA의 공개키 파일을 열고 내용을 복사해 줍니다. VSCode를 사용하지 않고 다른 편집기를 사용하시면 사용하시는 편집기를 이용해 공개키 파일을 열어 전체 내용을 복사합니다.
$ code ~/.ssh/id_rsa_userA.pub
2. userA로 GitHub에 로그인 후 오른쪽 상단의 프로필 사진을 클릭한 후 Settings 메뉴를 선택합니다.


3. 왼쪽 사이드바 메뉴에서 “SSH and GPG keys” 를 선택한 후 오른쪽 상단의 “New SSH key” 단추를 클릭합니다.


4. “Title” 입력칸에 등록할 공개키를 설명할 수 있는 문구를 입력 합니다. 예로 notebook-userA 처럼 각 노트북 , 데스크탑 등 사용하는 컴퓨터를 구분할 수 있도록 작성하면 편리합니다. “key” 필드에는 복사해둔 공개키를 붙여놓은 후 아래 “Add SSH key” 단추를 클릭합니다.


5. userB 계정도 앞의 1~4 번의 과정을 진행해 줍니다.
3. SSH config 파일 설정하고 SSH 연결 테스트 하기
원격 SSH 서버에 연결을 설정할 때 사용되는 SSH 옵션을 SSH config 파일에 작성을 합니다.
- Git Bash 실행합니다.
- SSH config 파일은 ~/.ssh 폴더 밑에 위치해야 합니다. 기존에 있으면 수정하시고 없으면 새롭게 만들어 작성해 줍니다. VSCode 에서 config 파일을 작성합니다.
$ cd ~/.ssh
$ code config
3. 아래와 같은 내용으로 작성합니다. SSH 클라이언트 config 파일의 내용은 섹션으로 나눠있고 각 섹션의 시작은 Host 지시자로 시작합니다.
#userA에 대한 SSH 설정
Host github.com-userA # SSH 연결에 사용될 대표이름
HostName github.com # github의 도메인
User userA # github 사용자 아이디
IdentityFile ~/.ssh/id_rsa_userA # 앞서 생성한 개인키 경로
#userB에 대한 SSH 설정
Host github.com-userB # SSH 연결에 사용될 대표이름
HostName github.com # github의 도메인
User userB # github 사용자 아이디
IdentityFile ~/.ssh/id_rsa_userB # 앞서 생성한 개인키 경로
- SSH 연결에 사용될 대표이름
Host에 대한 값이 중요합니다. 나중에 ssh로 연결할 때 Host 지시자에 지정된 값이 사용되니 구분하기 쉽고 기억하기 편리한 이름으로 작성합니다.
나중에 SSH 연결을 할 때 Host에 지정한 값이 github.com-userA를 호출하시면 그 섹션에서 지정한 HostName에 접속해 User의 계정을 가지고 IdentityFile 의 개인키로 참조해 인증을 하게 됩니다.
4.SSH 연결을 테스트 하기 위해 아래의 명령을 실행합니다.
$ ssh -T git@github.com-userA
성공하면 “Hi userA! You’ve successfully authenticated, …..” 메시지가 출력합니다. 결과 메시지에 userA처럼 username이 포함되면 연결에 성공되었습니다.
git은 반드시 git으로 작성합니다. 자신의 계정으로 변경하시면 안됩니다 github.com-userA 는 SSH config 파일에서 Host 지시자 뒤에 설정한 값으로 대신하시면 됩니다.
SSH로 clone 받기
이제는 리모트 리포지토리를 clone 받을 때 HTTPS 프로토콜이 아닌 SSH로 clone을 받아야 합니다.

SSH의 기본 경로는 git@github.com:github계정/리포지토리명.git 입니다. github의 계정이 userA이고 리포지토리의 이름이 userA-test이면 git@github.com:userA/userA-test.git 이 됩니다. 이 SSH 경로를 SSH config에 설정한 것에 맞춰서 변경해 주어야 합니다.
위에서 SSH config 파일 설정할 때 github의 userA 에 대한 정보를 담은 Host를 github.com-useA로 지정해 두었습니다. 기본 경로의 github.com을 SSH config 파일에서 설정한 대로 github.com-userA로 변경해줍니다.
$ git clone git@github.com-userA:userA/userA-test.git
clone 명령이 실행되면서 SSH config 파일에서 Host에 github.com-userA 섹션을 찾아 SSH로 연결해 인증 작업을 진행하게 됩니다.
5. 마무리하며
길고 긴 내용이었습니다. 각 단계도 길고 확인해야 할 내용도 많고 에러도 갑자기 튀어나오고… 제가 작업하면서 경험했던 오류와 그 해결을 위한 자료 검색을 통해서 저에게 가장 적절했던 순서를 찾아 정리했습니다.
github에서 private 리포지토리를 더 많이 사용하는 저는 계정 하나만 사용하면 VSCode가 많은걸 해결해 줘서 편리하게 사용하긴 했습니다. 근데 제 개인작업용과 프로젝트 계정을 분리해야만 했고 계정을 바꿔가며 private 리포지토리를 사용하는것에 많은 문제가 있었습니다. 그래서 이렇게 길고 복잡하지만 굳이 SSH 설정을 해야 했습니다. 마이크로소프트가 좀 더 힘내서 SSH 설정도 GUI 모드로 편리하게 해 줄 날이 있을거라 기대해 봅니다.
모두들 화이팅입니다.
~/.gitconfig
[user]
name = My Name
email = personal@personal.email
[includeIf "gitdir:~/dev/work/"]
path = ~/dev/work/.gitconfig
[url "github-work:work-github-org/"]
insteadOf = git@github.com:work-github-org/
~/dev/work/.gitconfig
[user]
email = work@work.email
위 까지 같이 설정했을 때 , /dev/work/ 하위에서는 커밋할때, 회사 계정.
그리고 그 외 디렉토리에서는 나의 프라이빗 계정으로 커밋할 수 있을 것임을 알 수 있다.
이때, 기 저장 된 키체인은 삭제해야한다.
혹은,
git remote add origin https://깃계정:키@github.com/깃계정/해당리포지토리.git
이런식으로도 할 수 있음
'Post' 카테고리의 다른 글
create template. index.html (0) | 2022.11.10 |
---|---|
python 테스트 프레임워크 (0) | 2022.11.08 |
mongodb slow query 조회 (0) | 2022.11.01 |
mongosh 조회 (0) | 2022.09.28 |
git | 이미 origin 에 push 한 커밋 메시지 수정 (0) | 2022.09.27 |