본문 바로가기
Linux 활용

Linux에서 GitHub Deploy key 사용하기

by 달나라외계인 2023. 2. 6.

 

  GitHub에서 private repository를 가져올 때 Deploy key를 등록해 두면 따로 추가 인증절차를 거치지 않아서 편리합니다. 이것을 설정해 보도록 하겠습니다. Ubuntu 배포판을 까셨다면 필요한 ssh, git 등은 아마 이미 설치되어 있을 겁니다. 저는 요즘 Docker를 사용하고 있는데 Ubuntu 바닐라 이미지를 이용하여 설치하면 이런 것들이 설치되어 있지 않으므로 처음부터 필요한 것들을 설치하며  GitHub와 연결해 보고자 합니다.

 

이미 설치되어 있는 것들은 넘어가시면 됩니다.

가장 먼저 당연히 git을 설치 하셔야 합니다.

apt install git

 

  그리고 네트워크 보안 프로토콜인 SSH 설치를 진행합니다.

apt install ssh

  정상적으로 ssh를 설치가 끝나면 추가로 ssh-keygen 이 함께 설치되어 있을 겁니다. 만약 윈도우를 사용중이신 분이라도 Git for Windows를 설치하셨다면 같이 설치되어 계실 거니다. ssh-keygen을 통해 만들어지는 SSH-Key는 public key 와 private key 두가지의 키페어로 이루어져 있습니다. 여기서 비공개키 (private key)는 GitHub 접속 클라이언트 (즉 현재 설정중인 PC)에만 가지고 있고, 공개키 (public key)는 GitHub에 설정해 놓습니다. 추후 접속할 때 공개키와 비공개키를 비교하여 둘이 일치하는지를 확인하게 됩니다. 

 

ssh-keygen를 이용하여 key를 만들어 주도록 합시다.

ssh-keygen -t rsa -f ~/.ssh/my_key

  -t 다음에는 Key 포멧을 지정할 수 있습니다. 지원되는 포멧은 rsa, dsa, ecdsa, ed25519를 지원합니다. 이에 대해서는 저는 상세히 알지 못하고 좀 공부하려다 보니 아래분이 잘 정리하신 글을 찾았기에 더 잘 설명할 자신은 없기에 해당 글을 링크하는 것으로 대신하겠습니다.

 

https://naleejang.tistory.com/218

 

보안 그리고 암호화 알고리즘

보안을 하면서 Http를 Https로 바꾼다고 해커로부터의 공격에서 안전하지 않을수도 있다는것을 알았다. Https를 구성하고 안전한 프로토콜을 사용해야만 한다는 사실도 알았다. 그리고, Https를 구성

naleejang.tistory.com

-f 옵션은 키를 저장할 위치입니다. 저는 my_key라고 지정하였는데 이런 경우 my_key와 my_key.pub 파일이 생성됩니다. 원하시는 이름으로 저장 하시면 됩니다. keygen을 통해 key를 만들경우 이 키에 대한 원하는 password를 입력하라고 나옵니다.

보안을 위해 password를 넣고 매번 접근 때마다 사용하시는 것도 좋지만, 저 같은 경우는 따로 공용 PC도 아니고 편하게 인증하려고 쓰는 것이기 때문에 password는 넣지 않았습니다. 공개키의 내용을 다음의 명령을 통해 확인합니다.

cat ~/.ssh/my_key.pub

확인이 되셨으면 해당 내용을 클립보드에 복사하셔서 github의 repository로 가셔서 Deploy keys->Add deploy key로 들어갑니다.

  타이틀에 원하는 이름을 지정하고, cat 명령을 통해 확인한 ssh 공개키를 붙여 넣습니다. 당연한 얘기지만 밑에 있는 'Allow write access'를 선택해 주시지 않으면 작업한 내용을 push를 할 수 없습니다. 읽기 전용입니다. 코드 작업을 하시려고 하는 거라면 허용해 주세요.

 

이제 git을 통해 ssh 인증시 어디의 파일을 참조할지 설정해 주어야 합니다. 다음의 명령을 통해 ssh 설정파일을 오픈합니다.

vim ~/.ssh/config

그 다음 다음의 내용을 추가합니다. [접속이름]은 SSH 연결에 사용될 이름을 임의로 기입하시고, [ID]에는 GitHub에서 사용하시는 ID를 넣어줍니다.

host [접속이름]
     hostname github.com
     user [ID]
     identityfile ~/.ssh/my_key
     identitiesonly yes

이제 GitHub에서 코드를 받아옵니다.경로는 GitHub의 Code-SSH로 가셔서 받아오시면 됩니다.

GitHub의 경로를 받으시면 아마 git@github.com:[ID]/[PROJECT].git 형태로 알려줄텐데요. 

git clone git@[접속이름]:[ID]/[PROJECT].git 형태로 바꾸어서 소스를 받으시면됩니다.

 

github.com을 아까 ~/.ssh/config 파일에 적으셨던 [접속이름] 으로 바꾸시면 됩니다.