Skip to content

Instantly share code, notes, and snippets.

@glossybigbro
Last active October 7, 2024 07:55
Show Gist options
  • Save glossybigbro/1533e25f291481766f66a33a79cee34e to your computer and use it in GitHub Desktop.
Save glossybigbro/1533e25f291481766f66a33a79cee34e to your computer and use it in GitHub Desktop.

SSH를 이용한 다중 GitHub 계정 설정 및 관리

이 가이드는 SSH 키를 사용하여 하나의 컴퓨터에서 여러 GitHub 계정을 설정하고, 리포지토리별로 각 계정을 관리하는 방법을 설명합니다. 각 계정에 대한 SSH 키를 생성하고, GitHub에 등록하여 계정별로 리모트 리포지토리를 관리할 수 있습니다.


1. 각 GitHub 계정에 대한 SSH 키 생성

각 GitHub 계정마다 별도의 SSH 키를 생성해야 합니다. 이는 계정마다 고유한 인증을 보장합니다.

1.1. 첫 번째 계정용 SSH 키 생성:

ssh-keygen -t rsa -b 4096 -C "첫번째_계정_이메일@example.com" -f ~/.ssh/id_rsa_account1
  • -b 4096: SSH 키의 비트 크기를 지정합니다. 4096은 4096비트 키를 생성하여 더 강력한 보안을 제공합니다. 기본적으로 2048비트가 사용되지만, 4096비트는 더 높은 보안을 위해 권장됩니다.
  • -C "주석": SSH 키에 **주석(comment)**을 추가하여, 어떤 사용자 또는 목적과 관련된 키인지 식별할 수 있습니다. 이메일 주소, 사용자 이름, 설명 등 원하는 주석을 입력할 수 있습니다.
  • -f "파일 경로": SSH 키 파일이 저장될 경로와 이름을 지정합니다. 예를 들어 ~/.ssh/id_rsa_account1처럼 파일 이름을 지정하면, 개인 키와 공개 키가 해당 경로에 저장됩니다.

1.2. 두 번째 계정용 SSH 키 생성:

ssh-keygen -t rsa -b 4096 -C "두번째_계정_이메일@example.com" -f ~/.ssh/id_rsa_account2
  • 각 계정의 SSH 키를 생성할 때, 파일 경로와 이름을 구분하여 지정합니다.

이 과정에서 SSH 키 쌍(개인 키와 공개 키)이 생성됩니다. SSH 키는 ~/.ssh/ 디렉토리에 저장됩니다. 패스프레이즈는 선택 사항이며, 보안을 강화하고 싶다면 설정할 수 있습니다. 패스프레이즈를 설정하지 않으려면 엔터를 누릅니다.


2. 패스프레이즈 설정 및 관리

패스프레이즈는 SSH 키를 사용할 때 추가적인 보안을 제공하기 위한 암호입니다. 패스프레이즈를 설정하면 SSH 키를 사용할 때마다 해당 패스프레이즈를 입력해야 하므로, 키 파일이 유출되더라도 패스프레이즈가 없다면 사용할 수 없습니다.

패스프레이즈를 설정하는 이유:

  1. 보안 강화: SSH 키만으로는 인증이 되지만, 패스프레이즈를 설정하면 추가적인 보안 레이어가 생깁니다.
  2. 키 파일 유출 방지: 만약 누군가가 SSH 키 파일을 가져가더라도, 패스프레이즈가 없으면 사용할 수 없습니다.

패스프레이즈를 설정하거나 관리하는 방법:

이미 생성된 SSH 키에 패스프레이즈를 추가하거나 제거하려면 다음 명령어를 사용합니다:

ssh-keygen -p -f ~/.ssh/id_rsa_account1
  • -p 옵션: 패스프레이즈 변경을 의미합니다.
  • -f 옵션: 해당 SSH 키 파일을 지정합니다.

패스프레이즈를 제거하려면, 새로운 패스프레이즈 입력 시 빈 칸으로 두고 엔터를 누르면 됩니다.


3. SSH 키 확인 및 GitHub에 등록

생성한 각 SSH 키의 공개 키를 확인하고, 이를 GitHub 계정에 등록해야 합니다.

3.1. 첫 번째 계정의 공개 키 확인:

cat ~/.ssh/id_rsa_account1.pub

3.2. 두 번째 계정의 공개 키 확인:

cat ~/.ssh/id_rsa_account2.pub

이 명령을 실행하면 공개 키가 터미널에 출력됩니다. 해당 공개 키를 복사한 후, 각 GitHub 계정에 등록합니다.


4. GitHub에 SSH 공개 키 등록

각 계정의 GitHub 설정에서 공개 키를 등록해야 합니다.

4.1. GitHub에 SSH 키 등록하는 방법:

  1. GitHub 계정에 로그인합니다.
  2. 오른쪽 상단의 프로필 사진을 클릭하고 Settings로 이동합니다.
  3. SSH and GPG keys 섹션으로 이동합니다.
  4. New SSH Key 버튼을 클릭합니다.
  5. Title에는 키를 쉽게 식별할 수 있는 이름을 입력합니다. (예: "Work SSH Key" 또는 "Personal SSH Key")
  6. Key 필드에 터미널에서 복사한 공개 키를 붙여넣습니다.
  7. Add SSH Key를 클릭하여 키를 등록합니다.

각 계정마다 이 과정을 반복하여 첫 번째 계정두 번째 계정에 대해 각각 SSH 키를 등록합니다.


5. SSH 설정 파일 구성 (~/.ssh/config)

여러 SSH 키를 사용하는 경우, SSH 설정 파일을 구성하여 각 계정에 맞는 SSH 키를 자동으로 선택하도록 설정할 수 있습니다.

5.1. SSH 설정 파일 열기:

nano ~/.ssh/config  # nano 대신 vim, code, subl 등을 사용할 수 있습니다.

파일이 없으면 자동으로 생성됩니다.

5.2. SSH 설정 파일에 계정별로 설정 추가:

# 첫 번째 계정 (account1) 설정
Host github.com-account1
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_account1
  IdentitiesOnly yes

# 두 번째 계정 (account2) 설정
Host github.com-account2
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_account2
  IdentitiesOnly yes

이 설정을 통해, 각 GitHub 계정에 대해 올바른 SSH 키를 사용하여 인증할 수 있습니다.


6. 리포지토리별로 리모트 URL 설정

GitHub에서 작업할 리포지토리마다 사용할 계정에 맞는 리모트 URL을 설정합니다.

6.1. 첫 번째 계정의 리포지토리 리모트 URL 설정:

cd /path/to/repository1
git remote set-url origin git@github.com-account1:username/repository1.git

6.2. 두 번째 계정의 리포지토리 리모트 URL 설정:

cd /path/to/repository2
git remote set-url origin git@github.com-account2:username/repository2.git

각 리포지토리에서 해당 계정에 맞는 리모트 URL을 설정해야 합니다. 이렇게 하면 Git 작업 시 자동으로 올바른 SSH 키가 사용됩니다.


7. SSH 연결 테스트

설정이 완료된 후, 각 계정에서 SSH 연결이 올바르게 설정되었는지 확인해야 합니다.

7.1. 첫 번째 계정 SSH 연결 테스트:

ssh -T git@github.com-account1
  • -T: SSH 연결 시 원격 서버에서 명령어 입력 공간(터미널)을 만들지 않고 인증만 수행합니다.

7.2. 두 번째 계정 SSH 연결 테스트:

ssh -T git@github.com-account2

정상적으로 연결되었다면, 다음과 같은 메시지가 출력됩니다:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

이 메시지가 출력되면, SSH 연결이 성공적으로 설정된 것입니다.


8. SSH 연결 시 나타나는 경고 메시지 처리

SSH를 처음으로 GitHub 서버에 연결할 때, 다음과 같은 경고 메시지가 나타날 수 있습니다:

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.

이 메시지가 나타나는 이유는 SSH 클라이언트가 처음으로 GitHub 서버에 연결되기 때문입니다. GitHub 서버의 신뢰성을 보장하기 위해 호스트 키를 확인하는 절차입니다.

처음 연결 시, SSH는 GitHub의 호스트 키를 로컬에 저장하여 이후 연결을 신뢰할 수 있도록 합니다. 이 메시지가 뜰 때, yes라고 입력하면 연결이 완료되고 호스트 키가 로컬의 ~/.ssh/known_hosts 파일에 저장됩니다. 그 후에는 다시 묻지 않습니다.


9. SSH 키 관리 팁

  1. SSH 키 백업: 생성한 SSH 키를 안전한 곳에 백업해 두는 것이 중요합니다. 만약 시스템이 초기화되거나 새 컴퓨터로 이동할 경우, 백업된 키를 복원하여 계속해서 GitHub 작업을 할 수 있습니다.

SSH 키 백업 방법:

cp ~/.ssh/id_rsa_account1 ~/백업폴더/id_rsa_account1
cp ~/.ssh/id_rsa_account1.pub ~/백업폴더/id_rsa_account1.pub

cp ~/.ssh/id_rsa_account2 ~/백업폴더/id_rsa_account2
cp ~/.ssh/id_rsa_account2.pub ~/백업폴더/id_rsa_account2.pub

이 가이드를 따라 설정하면, 하나의 컴퓨터에서 여러 GitHub 계정을 SSH 키를 이용해 효율적으로 관리할 수 있습니다. 각 계정별로 리모트 리포지토리를 설정하고, 필요할 때마다 계정을 전환하여 작업할 수 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment