본문 바로가기

Linux

Github에 SSH Key 등록 및 연동하기

GitHub

1. SSH 정의

SSH는 Secure Shell의 약자로, 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 인터넷 프로토콜을 뜻합니다. SSH 프로토콜 사용에 필요한 SSH 키는 Private Key (Client), Public Key (Server)으로 비대칭 암호방식을 사용하고 있습니다. Private Key는 SSH로 접속하고자 하는 Client에게 존재하고 Public Key는 Server에 위치 하게됩니다. Private Key와 Public Key가 모두 있어야 인증이 되는 방식으로 각자 Private Key는 외부 유출없이 가지고 있고, Public Key만 네트워크를 통해 전달합니다. 서버에 접속할때 비밀번호 대신 Key를 제출하는 방식으로 비밀번호보다 높은 수준의 보안을 필요로할 때 주로 사용됩니다.

2. SSH Key 생성하기

먼저 SSH Key가 있는지 확인해봅시다.

cd ~/.ssh
ls

 

이전에 SSH Key를 발급받은적이 있다면 id_dsa나 id_rsa 라는 파일과 .pub 라는 확장자가 붙은 파일이 하나 더 있을 것입니다. 이 .pub 파일이 공개키이고 다른 파일은 개인키입니다. 만약 해당 파일이 없다면 SSH Key를 생성해봅시다.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

 

아래와 같은 메세지가 출력될텐데 Enter를 눌러 기본 경로에 저장시킵니다. 만약 다른 경로를 원한다면 입력해주면 됩니다.

Enter file in which to save the key (/Users/Name/.ssh/id_rsa):

 

공개키와 기본키가 기본경로에 저장된 것을 확인할 수 있습니다.

Generating public/private rsa key pair. Enter file in which to save the key (기본경로):

 

다음으로 SSH Key에 대한 비밀번호를 설정하라는 말이 나오는데, SSH Key에 대한 비밀번호를 만들어주고 싶으면 지정해주시면 됩니다. (저는 귀찮아서 지정하지 않았습니다.)

Enter passphrase (empty for no passphrase)

 

이제 SSH Key가 성공적으로 설치됐는지 확인해봅시다.

cd ~/.ssh
ls

 

id_rsa 라는 파일과 .pub 라는 확장자가 붙은 파일을 확인할 수 있습니다. 생성된 키 값이 무엇인지 확인해봅시다. 

cat ~/.ssh/id_rsa.pub

 

3. 생성한 SSH Key를 ssh-agent에 등록하기

SSH Key를 이용해 원격 서버에 접속할 때 생성시 만들었던 비밀번호를 물어보게 됩니다. ssh-agent는 개인키의 비밀번호를 암호화 해 기억해두고 처음 한 번만 개인키 비밀번호를 입력하면 다음부터는 기억한 비밀번호를 이용하는 방식을 사용합니다. 만약 앞의 과정에서 SSH Key에 대한 비밀번호를 만들어주지 않았다면 이 과정은 생략하셔도 됩니다.

먼저 SSH Agent를 백그라운드로 실행시켜줍니다.

eval $(ssh-agent)

 

다음으로 SSH Agent에 앞서 발급받은 SSH Key를 등록합니다. Identity added 라는 메세지를 받았다면 성공하신 것 입니다.

ssh-add ~/.ssh/id_rsa

 

만약 아래와 같은 에러가 발생했다면 Shell을 관리자 모드로 실행합니다.

 unable to start ssh-agent service, error :1058

 

아래의 명령어를 입력해주고 위의 과정을 다시 진행하시면 됩니다.

 Set-Service ssh-agent -StartupType Manual

 

4. Github에 SSH Key를 등록하기

로컬 개발 환경에서 Git을 혼자 사용한다면 SSH가 없어도 무방합니다. 하지만 안전하게 외부 Git 서버에서 코드를 Clone하거나 Push하려면 SSH 프로토콜을 사용해야합니다.

공개키를 Github에 등록해봅시다. 로그인 후 오른쪽 상단의 프로필을 클릭하고, Settings 메뉴로 이동합니다.

다음으로 왼쪽 사이드바에서 SSH and GPS Keys를 선택합니다.

다음으로 New SSH Key를 선택합니다.

Title 에는 등록하려는 Key의 이름을 지정해주시면 됩니다. 저는 Home Macbook으로 지정했습니다. Key 필드에는 공개키를 복사해서 넣어줘야합니다. 

앞서 발급받았던 공개키를 클립보드에 복사해주기 위해 아래 명령어를 실행해주고 위의 Key 필드에 넣어줍니다.

pbcopy < ~/.ssh/id_rsa.pub

 

Github에 SSH Key가 잘 등록된 것을 확인할 수 있습니다. 공개키가 공개된다고 보안상 위험은 없지만 전 가려두었습니다.

GitHub과 SSH Key가 잘 연동됐는지 확인해봅시다. 프로젝트를 clone할 때, HTTPS가 아닌 SSH 주소를 이용하여 clone을 해주면, 아이디/비번을 통한 계정 인증 없이 SSH Key로 해당 프로젝트를 Pull/Push를 할 수 있게 됩니다.

 

아래 명령어를 수행하면 아이디 비밀번호 입력 없이 프로젝트를 clone할 수 있는 것을 확인하실 수 있습니다.

git clone git@github.com:<url-repo>.git

'Linux' 카테고리의 다른 글

SourceTree에 GitHub 계정 연동하기  (0) 2021.10.26
GitHub에서 Personal access tokens 발급받는 방법  (0) 2021.10.26