관리 메뉴

Bbaktaeho

[Git/Github] Repository의 Deploy key 사용하기 (ssh-keygen, 공개키, 비밀키) 본문

개발 (Develop)/깃, 깃허브 (Git, Github)

[Git/Github] Repository의 Deploy key 사용하기 (ssh-keygen, 공개키, 비밀키)

Bbaktaeho 2021. 8. 30. 17:29
반응형

왜 사용하는가?

로컬이 아닌 공용 서버, 새로 구축한 서버에서 private repository를 가져올 때마다 인증을 해야 하는 번거로움이 있습니다.

이럴 때 repository에 public key(공개키)를 등록하고 클론할 서버에 private key(개인키)를 들고 있게 하면 간편하게 repository에 접근할 수 있습니다.

 

아래 순서대로 진행하면 됩니다.

  1. 키 쌍을 생성
  2. repository에 deploy key 추가
  3. ssh conifg 설정
  4. git clone

키 생성하기

터미널에서 ssh-keygen을 활용하여 아래의 옵션을 추가한 후 키 페어를 생성합니다.

ssh-keygen -t rsa -b 2048 -f ~/.ssh/test_key

t 옵션은 암호화 타입을 지정하고 b 옵션은 bit 크기를 지정합니다. (지정하지 않으면 기본은 2048)

f 옵션은 생성된 키 페어의 이름과 저장될 경로입니다.

따라서 생성된 키 페어는 ~/.ssh/ 디렉터리에 test_key, test_key.pub 이름으로 생성됩니다.

 

생성 중에 Enter passphrase (empty for no passphrase): 에서 암호를 입력할 수 있지만 그냥 enter키로 넘어가겠습니다.

여기서 암호를 지정해주면 해당 repository에 접근할 때 암호를 요청받게 됩니다.

# ~/.ssh/
-rw-------  1 peer01 peer01 3401  8월 30 15:48 test_key
-rw-r--r--  1 peer01 peer01  755  8월 30 15:48 test_key.pub

키의 내용은 cat 명령어나 에디터를 실행시켜 확인할 수 있습니다.

cat test_key.pub

# public key
ssh-rsa
...
...
...

Deploy key 추가하기

private repository에서 Settings을 클릭합니다.

Settings 클릭

왼쪽 카테고리에서 Deploy keys를 클릭합니다.

Deploy keys 클릭

Add deploy key 버튼을 클릭하고 title, key를 입력합니다.

여기서 title은 의미 있게만 지어주시면 되고 key는 public key, 즉 .pub 키의 내용을 입력해야 합니다.

입력이 완료되면 Add key 버튼을 클릭합니다.

Add Key 클릭
생성된 키

정상적으로 키가 생성된 것을 확인합니다.

SSH Config 셋팅

마지막으로 ssh를 간편하게 사용하기 위해 config 파일을 생성해서 관련 설정값을 작성합니다.

ssh config는 키가 저장되어 있는 경로인 .ssh/ 디렉토리에 맞춰 생성합니다. (이미 존재할 수 있음)

vim ~/.ssh/config

config 파일에 들어갈 내용을 작성합니다.

Host test
     HostName github.com
     User git
     IdentityFile ~/.ssh/test_key
     IdentitiesOnly yes
     Port 22

Host는 원하는 내용을 적어주셔도 됩니다.

HostName, User는 우리가 github의 private repository에 비밀키로 인증을 받을 것이므로 위와 같이 설정해줍니다.

즉, HostName은 접속할 서버의 도메인이며 User는 접속할 서버의 user입니다.

다음으로 개인키의 경로를 설정해줍니다.

Clone

ssh config의 Host를 따라서 repository를 클론 합니다.

SSH 클릭

SSH copy 할 내용을 보면 git@github.com:... 으로 시작합니다.

ssh config를 작성했던 Host 설정 값에 따라서 조금 수정해야 합니다. 그렇지 않으면 clone에 실패합니다.

 

git@github.com -> git@test

 

반대로 conifg 파일의 Host를 github.com 으로 수정해도 됩니다. 

git clone git@test:bbaktaeho/deploy-key-tester.git

# 결과
Cloning into 'deploy-key-tester'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

ssh config 파일에 같은 Host 설정 값을 사용할 수도 있습니다.

Host github.com
     HostName github.com
     User git
     IdentityFile ~/.ssh/test_key
     IdentitiesOnly yes
     Port 22

Host github.com
     HostName github.com
     User git
     IdentityFile ~/.ssh/test2_key
     IdentitiesOnly yes
     Port 22


Host github.com
     HostName github.com
     User git
     IdentityFile ~/.ssh/test3_key
     IdentitiesOnly yes
     Port 22

그러면 기존에 git@github.com... 처럼 git clone을 하실 수 있습니다.

 

읽어주셔서 감사합니다~!

반응형