freezner

[Git] SSH 공개키로 비밀번호 없이 Push/Pull 하도록 설정

Git 원격 저장소를 이용할때 Push나 Pull을 할때 매번 패스워드를 묻게 되는데 이 과정을 SSH 공개키를 생성하여 생략할 수 있습니다.

GitHub가 아닌 별도 원격 Git 저장소 서버를 운영하고 있다는 가정하에 작성된 포스트이며,

최대한 간단하게 설명하도록 하겠습니다.

 

1. 공개키/개인키 생성하기 (Git 원격저장소 서버)

$ cd ~/.ssh
$ ssh-keygen -t rsa

키이름을 정할지와 키 비밀번호를 지정할지를 묻는데 모두 Enter로 지나갑니다.
만약 키이름이 id_rsa가 아닌 다른 이름으로 생성할 경우 git 인증 시점에서 키파일을 읽지 못합니다.
성공적으로 생성되었다면 id_rsa(개인키)와 id_rsa.pub(공개키)가 존재할 것 입니다.

 

2. 공개키 인증 파일(authorized_keys)에 등록

# 우선 ~/.ssh 디렉토리 안에 authorized_keys 파일이 있는지 확인. 없다면 생성.
$ touch authorized_keys

# 공개키(id_rsa.pub) 파일의 내용을 authorized_keys에 삽입
$ cat id_rsa.pub >> authorized_keys

# 제대로 삽입되었는지 확인
$ cat authorized_keys

 

3. 키 파일 저장 디렉토리(~/.ssh) 퍼미션 설정

키 파일은 보안에 취약한 설정을 한 경우 사용자 인증이 무력화되는 치명적인 문제를 낳기 때문에 적절한 퍼미션을 설정해주셔야 합니다. 원칙적으로 키파일은 쓰기와 실행 권한을 주지 않습니다.

$ chmod 700 ~/.ssh
$ chmod 644 ~/.ssh/*
$ chmod 600 ~/.ssh/id_rsa

개인키(id_rsa)의 경우 키 내용을 읽게 되면 인증 정보가 공개되는 것이나 마찬가지이기 때문에 읽기 권한도 주어서는 안됩니다.

 

4. 개인키 획득(다운로드)

개인키(id_rsa) 파일을 본인 PC에 다운로드 받습니다. 이 파일은 자물쇠(공개키)의 열쇠 역할이 되므로 분실되거나 유출되지 않도록 관리해야 합니다.

 

5. SSH 클라이언트로 접속

SSH 접속용 클라이언트는 종류가 많고 각각 방법이 다르기에 자세하게 설명은 어렵습니다. 하지만 공통적인 부분은 접속시 아이디 인증이 아닌 키 인증을 선택하여 비밀키를 불러와 패스워드 대신 개인키로 접속을 하는 것입니다.

개인키를 통해 접속을 한 경우 Git Push 또는 Pull 명령 실행시 키인증 정보를 읽어 패스워드를 더 이상 묻지 않도 자동으로 인증하게 됩니다.

Exit mobile version