【GitHub】Deploy keys를 사용해 ssh로 pull할 때까지

개요



github 리포지토리의 Deploy keys에 공개 키를 등록하고 AWS EC2 (Amazon Linux2)에서 ssh로 풀링하는 단계

절차



1. 공개키와 비공개키를 작성한다



서버에 (ec2-user로) ssh 연결하고 git pull 원하는 사용자로 공개 키와 개인 키를 만듭니다.

콘솔
// 今回はtamorieeeenというユーザーでgit pullしたい
$ sudo su - tamorieeeen

// .sshディレクトリを作成(無い場合)
$ mkdir .ssh
$ ls -la | grep ssh
drwxrwxr-x 2 tamorieeeen tamorieeeen        6 Aug 31 14:38 .ssh

// ディレクトリの権限が775になってると思うので700に変更
$ chmod 700 .ssh/
$ cd .ssh

// id_rsa_githubという名前で鍵を作成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tamorieeeen/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa_github.
Your public key has been saved in id_rsa_github.pub.

$ ls -l
-rw------- 1 tamorieeeen tamorieeeen 1675 Aug 31 14:42 id_rsa_github
-rw-r--r-- 1 tamorieeeen tamorieeeen  433 Aug 31 14:42 id_rsa_github.pub

2. github에 공개 키 등록



등록하고 싶은 리포지토리의 Settings > Deploy keys > Add deploy key 에서 미리 만든 공개키를 등록한다


공개키는 less로 보고 복사하면 OK

콘솔
$ less id_rsa_github.pub
[email protected]



Title에 알기 쉬운 이름을 붙이고, Key에 조금 복사한 공개키를 붙이고 Add key 를 누르면 완료.
※push도 사용하는 경우는 Add key 위의 Allow write access 에 체크를 넣는다

3. ssh_config 설정



비공개키를 id_rsa 이외의 파일명으로 한 경우는 config를 설정한다.
( id_rsa 의 경우는 디폴트로 보러 가기 때문에 설정 불필요… 해야 한다)

콘솔
$ pwd
/home/tamorieeeen/.ssh

// configに設定を追記
$ vi config
Host github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_github
  User git

$ ls -l
-rw-rw-r-- 1 tamorieeeen tamorieeeen   81 Aug 31 15:16 config
-rw------- 1 tamorieeeen tamorieeeen 1675 Aug 31 14:42 id_rsa_github
-rw-r--r-- 1 tamorieeeen tamorieeeen  433 Aug 31 14:42 id_rsa_github.pub

// configの権限を600に変更
$ chmod 600 config

4. 연결 확인



아래가 출력되면 ssh 연결이 완료됩니다.
.ssh/config 의 Host로 설정한 명칭과 @ 이후는 일치시킬 것
(여기서 Permission denied (publickey). 에서 빠졌다)

콘솔
$ ssh -T [email protected]
Hi tamorieeeen/repository_name! You've successfully authenticated, but GitHub does not provide shell access.

5. https 연결에서 ssh 연결로 변경



신규로 clone하는 경우는 그대로 github의 Clone with SSH 의 URL로 clone 해 주면 좋지만, 이번은 벌써 https로 clone 끝난 리포지토리이므로 접속 방식을 https에서 ssh로 변경한다.

콘솔
// clone済のリポジトリに移動
$ pwd
/home/tamorieeeen/repository

// 現在のremoteリポジトリをチェック
$ git remote -v
origin  https://github.com/tamorieeeen/repository.git (fetch)
origin  https://github.com/tamorieeeen/repository.git (push)

// remoteリポジトリのURLをsshのものに変更
$ git remote set-url origin [email protected]:tamorieeeen/repository.git

// 変更されてるかチェック
$ git remote -v
origin  [email protected]:tamorieeeen/repository.git (fetch)
origin  [email protected]:tamorieeeen/repository.git (push)

// pullしてみる
$ git pull origin develop
From github.com:tamorieeeen/repository
 * branch            develop    -> FETCH_HEAD
Already up to date.

무사히 pull 할 수 있었으므로 완료.

참고


  • 너의 SSH 키를 만드는 법은 틀렸다.
  • git에 ssh로 연결합니다! → Why? Permission Denied...
  • 좋은 웹페이지 즐겨찾기