우주선

SSH로 GitHub 계정 여러개 사용하기 본문

Etc

SSH로 GitHub 계정 여러개 사용하기

선주우 2022. 2. 8. 16:49
SSH로 GitHub 계정 여러개 사용하기
 
v MacOS 기준ㅤ
v 우선 SSH key가 있는지 확인하고 시작하자 (괜히 있는거 덮어씌우지 말기로 해요..)

 

1. SSH key 생성하기
2. ssh-agent에 SSH 경로 추가하기 (선택적)
3. SSH config 설정하기
4. GitHub 에서 SSH key 추가하기
5. 설정 확인하기
6. 신나게 여러 계정을 쓰기
 
 

1.SSH key 생성하기

~/.ssh 위치에서 ssh key를 생성해준다. (폴더 없는 경우는 만들고 시작)
$ ssh-keygen -t rsa -b 4096 -C "test@example.com"
 -t 는 어떤 암호화 방식을 사용할지 설정하는 옵션이고
-b 는 생성할 key의 크기이다
-C 뒤에는 깃허브 계정의 메일 주소를 넣는다.
 
키를 생성하면 아래가 나오는데 ssh 키 이름 입력을 요구하는 것이다. id_rsa_work , id_rsa_me 등등 본인이 원하는 걸로 입력 후 엔터.
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):id_rsa_me
 
이름 정해줬으니까 암호 내놓으라고 한다.  
Enter passphrase (empty for no passphrase):
Enter same passphrase again:코드를 입력하세요
 여기서 그냥 두번 다 엔터를 누르면 암호를 설정하지 않을 수 있다.
( 암호를 사용해도 매번 다시 입력할 필요가 없도록 키체인에 암호를 저장하도록 설정할 수 있고, ssh-agent에 ssh키 추가를 할 수 있다. 공용 네트워크나 회사 컴퓨터를 이용한다면 암호 설정을 권장한다. )
 
암호까지 입력 완료하면 키가 생성되었을 것이다.ls 명령어로 .ssh 폴더 안에 있는 파일들을 확인한다. 두 개의 계정을 사용할 거라면(=두 번 키를 생성했다면) 이렇게 출력될 것이다. 공개키(.pub),비밀키가 1세트로 2개 생성되었다. 
➜  .ssh ls
id_rsa_work.pub      id_rsa_me.pub
id_rsa_work          id_rsa_me
 

2.ssh-agent에 SSH 경로 추가하기 (선택적)

ssh-agent가 뭘까 ? 서버에 본인을 인증할 때 개인 키를 사용하여 본인임을 인증하는데 ssh-agent는 키를 캐시하고 있어서 암호를 한 번만 입력하면 인증할 때마다 입력할 필요가 없다. 캐시할 기간도 설정할 수 있다.
즉 앞서 ssh key에 암호를 설정하지 않았다면 사용할 이유가 없는 것이다.
만약 ssh-agent를 사용한다면 아래와 같이 ssh agent를 실행 후 ssh key 경로를 추가하면 된다.
eval "$(ssh-agent -s)" // 실행
$ ssh-add -K ~/.ssh/id_rsa_work // 경로 추가
 -K 옵션은 ssh-agent에 ssh 키를 추가할 때 키체인에 암호를 저장하는 애플의 표준 버전이고,
참고로 MacOS Monterey(12.0)에서 -K및 플래그는 더 이상 사용되지 않으며 각각 및 플래그 -A로 대체되었다고 한다.
 
이제 ssh-add -l 명령어로 등록한 키의 목록을 확인할 수 있다.
  

3.SSH config 설정하기 

이제 GitHub에게 SSH key에 접근할 수 있도록 알려주는 설정을 해야 한다. (파일이 없다면 ~/.ssh 에 config 파일을 생성한다.)
 config의 내용은 다음과 같이 작성한다.
# 일할 계정-----------
Host github.com-work 
	HostName github.com 
	User developer 
    IdentityFile ~/.ssh/id_rsa_me_work

# 개인 계정-----------
Host github.com-me 
	HostName github.com
    User home
    IdentityFile ~/.ssh/id_rsa_me​
Host는 사용자가 지정하는 이름으로 저장소 주소에 사용된다.
HostName 은 github.com, User는 GitHub의 이름(닉네임)을 입력한다.
IdentityFile는 ssh key의 경로이다. 
  

4.GitHub 에서 SSH key 추가하기

 이제 Github에서 로그인해 SSH key를 추가하러 간다.
Setting > SSH and GPG keys (이곳으로)
 
New SSH Key를 클릭해서 Title에는 사용자 지정 이름을,
Key에는 이 깃허브 계정의 SSH의 공개키(.pub) 내용을 모두 복사하여 가져온다.ㅤ
주의! 키를 복사할 때 줄 바꿈이나 공백을 추가하지 말것. ( 나는 그냥 cat id_rsa_work.pub 으로 열어서 복사했음 ) 
 
설정이 완료되면 Setting > SSH and GPG keys 화면 SSH keys 리스트에 새 키가 생긴 것을 볼 수 있다.
 

5. 설정 확인하기 

로컬 터미널에서 SSH key가 제대로 설정되어있는지 확인할 수 있다.
ssh -T git@github.com-work
Hi developer! You've successfully authenticated, but GitHub does not provide shell access.

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

6. 신나게 여러 계정을 쓰기

여러 개의 계정을 사용할 경우, git config에서 remote가 맞게 설정되어 있는지 주의해야 한다.
현재 연결된 remote는 아래와 같은 명령어로 알 수 있다. 
git remote -v

 

상황에 따라 ssh키를 사용할 수 있게 remote를 변경하거나 추가해주자.
//만약 기존 프로젝트가 있다면 remote를 변경한다.
git remote set-url origin git@github.com-work:developer/old-project.git
  
//새로 프로젝트를 클론할 경우 remote 주소는 아래와 같은 형식으로 사용한다.
git clone git@github.com-work:developer/new-project.git
 
//신규 프로젝트가 있다면 remote를 새로 추가해준다.
git remote add origin git@github.com-me:home/new-project.git​
 

이제 진짜! 신나게 여러 계정을 이용하면 된다.ㅤ
 
 

 

--------------------
참고
 

 

Comments