여러 GitHub 계정에 대해 여러 SSH 키 설정

이 시나리오를 상상해보십시오. 3개의 Github 계정이 있고 각각 고유한 용도가 있습니다. 정규직 업무용 계정 A, 포트폴리오 프로젝트용 계정 B, 개인 프로젝트용 계정 C. 다른 계정의 저장소 간에 전환할 때마다 각 계정에 대해 다른 SSH 키를 사용해야 합니다.

전환할 때마다 SSH 구성을 변경하는 것은 시간을 잘 활용하지 못합니다. 이제 각 계정에 대해 여러 개의 SSH 키를 보유하고 SSH가 자동으로 관리하도록 하는 것이 가능하다고 생각하기 시작할 수 있습니다. 예, 가능하지만 이 기사에서 자세히 설명할 문제가 있기 때문에 상당히 까다로울 수 있습니다.

Linux를 실행 중이고 이미 openssh가 설치되어 있다고 가정합니다. Mac의 경우 괜찮을 것입니다. Windows의 경우 git bash 또는 WSL이 설치되어 있어야 합니다.

SSH 키 생성



가장 먼저 해야 할 일은 각 계정에 대한 SSH 키를 만드는 것입니다.
터미널로 이동하여 각 명령을 실행합니다.

ssh-keygen -t rsa -f ~/.ssh/id_rsa_fulltime -C "[email protected]"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_portfolio -C "[email protected]"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_personal -C "[email protected]"


첫 번째 명령은 지정된 Github 이메일[email protected]과 연결된 풀타임 계정에 대한 SSH 키를 생성하고 지정된 경로~/.ssh/id_rsa_fulltime에 저장합니다.
두 번째 및 세 번째 명령은 포트폴리오 계정 및 개인 계정에 대해 각각 동일한 작업을 수행합니다.

SSH 인증 에이전트에 SSH 키 추가



ssh-add ~/.ssh/id_rsa_fulltime
ssh-add ~/.ssh/id_rsa_portfolio
ssh-add ~/.ssh/id_rsa_personal

SSH 구성 파일 생성



이제 ~/.ssh로 이동하여 그 안에 config라는 파일을 만들어야 합니다.
vim 또는 다른 텍스트 편집기로 열고 다음 구성을 추가하십시오.

Host *
AddKeysToAgent yes
IdentitiesOnly yes

Host github.com-fulltime
HostName github.com
IdentityFile ~/.ssh/id_rsa_fulltime

Host github.com-portfolio
HostName github.com
IdentityFile ~/.ssh/id_rsa_portfolio

Host github.com-personal
HostName github.com
IdentityFile ~/.ssh/id_rsa_personal

Host *는 구성이 github.com-prefix 뿐만 아니라 모든 호스트에 적용됨을 의미합니다.
AddKeysToAgent는 매번 암호를 입력할 필요가 없도록 SSH에 암호를 기억하도록 지시합니다.
IdentitiesOnly는 이전에 의미했던 문제입니다. 현재 풀타임 계정으로 인증을 받았고 개인 계정으로 전환하고 싶다고 가정해 보겠습니다. 지정하지 않으면 SSH는 각 계정에 대해 이미 다른 SSH 키를 지정했더라도 첫 번째 인증된 SSH 키를 계속 사용합니다. 이 경우 각 계정에 대해 정규 SSH 키를 계속 사용합니다.
github.com 뒤의 접미사(예: -personal)는 다른 SSH 키를 식별하는 데 사용되며 원하는 대로 이름을 지정할 수 있지만 고유해야 합니다. 일반적으로 Github 계정이 사용되는 컨텍스트로 이름을 지정했습니다.

최종 설정



이미 Github에서 복제된 기존 리포지토리가 있는 경우 repo 디렉토리로 이동하여 github.com 호스트 이름에 식별자 접미사를 추가하도록 파일을 편집.git/config해야 합니다. 예를 들어 개인 계정에서 이름이 personal-project인 리포지토리를 이미 복제한 경우 올바른 SSH 키를 리포지토리에 연결하려면 이 접미사-personalgithub.com 호스트 이름에 추가해야 합니다.

[remote "origin"]
url = [email protected]:personal-account/personal-project.git


새 저장소를 복제하려는 경우. 복제 URL의 호스트 이름github.com에 식별자 접미사를 추가하기만 하면 됩니다.git clone [email protected]:personal-account/personal-project.git
그런 다음 리포지토리에 대한 Github 사용자 이름과 이메일을 설정해야 합니다.

git config user.name "personal-account"
git config user.email "[email protected]"


축하합니다. 여러 SSH 키를 성공적으로 설정했습니다.
다음 기사에서 만나요!

좋은 웹페이지 즐겨찾기