티스토리 뷰
SSH을 통한 Git Clone
SSH 프로토콜을 사용하여 Git Repository를 아래와 같이 clone할 수 있다. SSH 프로토콜을 사용하면 username과 password(token)을 입력하지 않고, push/pull 을 할 수 있다.
$ git clone git@host:username/repository.git
SSH 이란?
SSH은 Secure Shell의 준말로, 공개 키와 비밀 키 한쌍(Key pair)을 이용해 인증하는 방식이다. 보통 공개 키의 경우 .pub, 개인 키의 경우 .pem의 파일 형식을 띄고 있다. 사용자의 컴퓨터에서 SSH 키를 생성하면 공개 키와 비밀 키가 생성된다. 해당 공개키를 Github에 등록해 컴퓨터를 인증할 수 있다. Github에 공개 키를 저장해놓으면, 그 뒤로 Repository에 접근할 때마다 사용자 컴퓨터의 비밀 키와 Github 서버의 공개 키를 비교한다. 두 키가 서로 부합하다면 컴퓨터와 서버가 연결되는 것이다. (SSH 동작 과정에 대한 자세한 설명은 링크 참고)
SSH와 HTTPS 비교
SSH와 HTTPS를 사용하여 Repository를 Clone하는 것의 주요 차이점은 인증이 처리되는 방식이다. HTTPS를 사용하는 경우 Git 서버에 인증하기 위해 사용자 이름과 비밀번호(토큰)을 입력한다. 반면에, SSH는 SSH 키를 통해 인증하기 때문에 네트워크를 통해 사용자의 정보를 보낼 필요가 없다. SSH은 네트워크 전송 과정에서 유출되어도 큰 위험이 없는 공개키를 사용하기 때문에 HTTPS 인증 방식보다 안전하다. 본격적으로, SSH를 통해 Git Clone 하는 방법을 알아보자.
1. SSH 키 생성
ssh-keygen 명령을 사용해 SSH 키를 생성한다. 해당 명령을 입력하면 여러 질문들이 나오는데, 아무것도 입력하지 않고 Enter를 3번 누르면 된다. 질문에 대한 내용은 아래에서 좀 더 자세히 살펴보자.
$ ssh-keygen
첫번째 질문은 SSH 키가 저장될 파일 경로를 확인 후 Enter를 누르거나, 해당 경로에 SSH 키가 존재하는 경우 다른 경로를 입력하라는 질문이다. 나는 Enter를 눌러 넘어갔다.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ihaneul/.ssh/id_rsa):
그 다음 질문은 암호를 입력하라는 질문과 암호 재확인 질문이다. 암호를 입력하고 싶은 경우 암호 입력 후 Enter를 누르면 되고, 암호를 사용하지 않는 경우 바로 Enter를 누르면 된다. 암호 재확인 질문은 암호를 사용하지 않는 경우 Enter를 누르면 된다.
Enter file in which to save the key (/Users/ihaneul/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
그러면, 아래와 같이 성공적으로 SSH 키가 생성되었음을 알리는 출력이 터미널 창에 나타난다.
The key's randomart image is:
+---[RSA 3072]----+
| . o.*....|
| . o * = .|
| o + o... |
| . o . o+ .|
| . S . ...o.|
| . =.+ ......|
| Eo*o+. o.. |
| o.B=o o. + |
| .o +oo. .o |
+----[SHA256]-----+
그리고, .ssh 디렉터리로 이동하면 id_rsa.pub 파일이 생성된 것을 확인할 수 있다. id_rsa.pub에는 공개 키가 담겨있다.
$ ls ~/.ssh
id_rsa.pub
2. Github 계정에 공개 키 추가
cat 명령을 사용하여 위에서 생성한 공개 키 파일 내용을 화면에 나타내고, 해당 내용을 복사한다.
$ cat ~/.ssh/id_rsa.pub
그 후, Github 계정에 로그인해 프로필을 클릭하고, Settings를 클릭한다.

왼쪽 메뉴에서 SSH and GPG keys 클릭하고, New SSH Key 버튼을 클릭한다.


Title 필드에 간단한 SSH key 이름을 추가하고, Key 필드에 위에서 복사한 SSH 공개 키를 붙여넣는다. 그리고, Add SSH Key를 클릭하면 아래와 같이 SSH Key가 등록된 것을 확인할 수 있다.


3. SSH 주소로 Github Repository Clone
clone 하려는 Repository로 이동해 Code 버튼을 클릭한다. 그 후, SSH 탭을 클릭한 뒤 해당 URL을 복사해 clone하면 된다. SSH 주소로 clone 받은 Repository는 인증 정보 입력 없이 바로 push/pull 명령을 사용할 수 있다.

$ git clone git@host:username/repository.git