Credential 저장소 / HTTPS 프로토콜


Git 리모트 저장소와 통신할 때 사용하는 프로토콜은 Git(기본 프로토콜), SSH, HTTPS 방식이 있다. Git 기본 프로토콜은 인증 기능이 미약하여 거의 사용하지 않고, 주로 SSH나 HTTPS를 사용한다.

HTTPS 프로토콜을 사용하면 매번 사용자 이름과 암호를 입력해야하는 번거로움이 있는데 Git은 이를 위해 인증 정보를 저장해두고 자동으로 입력해주는 Credential 시스템을 제공한다. Credential 기능에서 제공하는 옵션은 아래 3가지가 있다.

  1. cache 모드 : 인증정보를 메모리에 임시 저장(기본 15분)
  2. store 모드 : 인증 정보를 텍스트 파일로 Disk에 저장. 사용자 홈 디렉토리에 일반 텍스트 파일로 저장되므로 인증 정보 노출 위험 존재한다.
  3. osxkeychain 모드(macOS 전용) : 인증 정보를 맥의 키체인에 저장. 암호화돼서 저장되므로 안전하다.

<aside> 💡 macOS는 기본적으로 osxkeychain 모드로 설정되어 있어서 따로 설정하지 않아도 된다.

</aside>

터미널에서 아래 명령어를 입력하면 macOS의 키체인에 인증 정보를 보관하고 사용하게 된다. 그럼 최초 인증시에만 아이디와 패스워드를 입력하면 입력한 정보가 키체인에 보관된다. 이후부턴 이 키체인 정보를 사용해 자동으로 인증된다.

# osxkeychain 헬퍼를 인증 처리에 사용하도록 설정
git config --global credential.helper osxkeychain

Git의 global configuration 목록을 확인해보면 credential.helper=osxkeychain 항목이 추가된걸 확인할 수 있다.

# List only global configuration entries
git config --list --global

Untitled

키체인 앱에서 github.com을 검색해서 자동으로 등록된 인증 정보를 확인할 수도 있다.

2021-09-26_18-26-33.png

SSH 프로토콜


<aside> 💡 SSH 공개키를 만들어서 등록해두면 깃헙 리모트 저장소와 통신할 때 HTTPS 프로토콜 인증 방식은 사용하지 않아도 된다.

</aside>

배경 지식