GitHub SSH Key 등록 및 사용

GitHub에서 소스를 내려받았을 때, https 방식으로 받게되면 리모트 서버인 GitHub에 pull과 push를 할 때마다 ID 및 패스워드를 입력해야 하는 번거로움이 생긴다. 이런 번거로움을 없애기 위해 GitHub에 RSA Public key를 등록하여 ID/패스워드를 입력하는 과정을 생략할 수 있다.

 

RSA Public key를 등록하기 위해서는 ssh 명령어를 사용하여 RSA key를 생성하도록 한다.

$ ssh-keygen -t rsa -b 4096 -C "<your email or comments>"

-C 옵션은 생략이 가능하며, 생성된 RSA key 저장 위치를 설정해야 한다. 일반적으로 default 값이 ~/.ssh/id_rsa로 생성한다. 이 글에서는 ~/.ssh/github_rsakey로 생성하였다.

만약 여러 개의 Git 서버를 사용하고 있다면, 각 서버에서 사용하는 rsa key 및 설정을 config 파일로 관리하며, 아래의 ~/.ssh/config 파일은 3개의 Git 서버를 사용하며, 각각 다른 RSA key를 사용하는 것을 나타낸다.

만약 우분투 20.04를 사용한다면 KeyAlgorithms 항목을 추가해야 한다. 이것을 추가하지 않으면 key 교환 과정에서 에러가 발생하여 Git 서버에 연결이 불가능하다.

 

GitHub에 SSH로 생성한 RSA Public key를 등록하면 ID, 패스워드 입력없이 사용이 가능하다. GitHub Settings -> SSH and GPG keys 메뉴에서 'New SSH key'를 선택하면 아래 이미지를 볼 수 있다.

key 항목은 ~/.ssh/github_rsakey.pub 내용을 복사하여 붙어넣으면 SSH key 등록이 완료되며, GitHub에서 소스를 내려받는 방식을 아래 이미지와 같이 SSH로 선택하여 clone하면 ID, 패스워드 입력없이 사용이 가능하다.

$ git clone git@github.com:highgon2/BigHitLotto.git BigHitLotto

리모트 서버에서 소스를 업데이트 하거나 받을 때마다 ID, 패스워드 입력하는 것이 매번 번거로웠는데, 이렇게 SSH key를 등록하여 사용함으로써, 편하게 리모트 서버에 접근할 수 있으며 여러 개의 서버를 동시에 사용이 가능하다.