[Git] 9.1. 인증 기능 살펴보기
카테고리: Git
태그: Cache, Certification, CLI, Git, Store
인증
Git에는 인증과 관련되어 credential.helper 옵션이 잇는데, 이 변수의 값과 동작 방식은 운영체제마다 다르다. 각각의 운영체제별로 차이점을 알아본다.
윈도우의 자격 증명(Credential) 관리
hello-git-cli 프로젝트를 열고 Git Bash를 실행한 뒤 옵션값을 살펴보자.
tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git config credential.helper
manager-core
tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git config --local credential.helper
tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git config --global credential.helper
tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git config --system credential.helper
manager-core
위의 코드를 실행한 결과이다.
credential.helper 옵션의 값이 manager-core이고 시스템 옵션으로 설정한 값이라는 것을 CLI를 통해서 확인할 수 있다. manager 값 외에도 cache 또는 store 값도 올 수 있는데 윈도우에서는 manager를 사용하는 것이 일반적이다. 이 값이 manager로 설정되어 있는 경우 git은 윈도우 OS에서 제공하는 자격 증명 관리자에 사용자 인증 관련 정보를 저장한다.
자격 증명 관리자는 윈도우 검색창에서 ‘자격’까지 입력하면 찾아서 실행할 수 있다.
[windows 자격 증명]에 GitHub 아이디와 패스워드가 저장된다. 실습을 하며 이용했던 git, sourcetree 등의 여러 사이트와 함께 개인적인 아이디/패스워드가 들어간 프로그램들이 몇몇 보인다.
윈도우 자격 증명 관리자는 그다지 사용하기 편리한 프로그램은 아닌데, 다행히도 소스트리가 자격 증명 관리자를 더 쉽게 사용할 수 있도록 도움을 준다고 한다.
중요한 것은 A의 계정에서 B의 프로젝트를 푸시하려고 할 때 오류가 발생할 수 있다. 때문에 자격 증명 관리자에서 꼼꼼하게 계정을 제거해야 오류가 발생하지 않는다.
소스트리 [도구-인증-계정]의 사용자 중 맞는 사용자를 선택해서 [설정 초기화] 버튼을 누르거나, [도구-인증-계정]의 불필요한 사용자를 삭제하는 방법으로 손쉽게 계정을 관리할 수 있다.
맥 PC에서 인증 관련 사용자 옵션
앞으로도 Window를 계속 사용할 거라는 보장이 없다. 회사 업무 환경에 따라 맥 OS가 필요하다면 맥에 대해서도 알고 있을 필요가 있기 때문에 추가로 정리한다.
맥의 경우 역시 윈도우와 크게 다르지 않다. 기본적으로 osxkeychain을 사용한다.
$ git config --local credential.helper
$ git config --global credential.helper
$ git config --system credential.helper
osxkeychain
사용자의 PC 상태에 따라 달라질 수 있으나, 기본적으로 맥에서 사용자 인증을 관리해주는 osxkeychain이 git의 인증 관리에도 사용된다.
리눅스
보통 리눅스는 서버 OS로 사용하는 경우가 많다.
$ git config --local credential.helper
$ git config --global credential.helper
$ git config --system credential.helper
기본 설정에서처럼 credential.helper에 아무 옵션이 지정되어 있지 않을 경우 매번 사용자 ID/PW를 물어본다. 이는 상당히 번거로운 과정이기 때무누에 보통 cache 옵션, 또는 store 옵션을 지정한다.
1. 리눅스에서 cache 옵션 사용하기
cache 옵션을 사용하면 cache 인증 모드가 되는데, 이 경우 지정한 시간만큼 사용자 ID/PW를 임시로 저장한다.
$ git config credential.helper "cache --timeout=30"
# 30초간 ID/PW 저장
$ git push
# 최초 1회 ID/PW 입력
Username for 'https://github.com': Orchemi
Password for 'https://Orchemi@github.com': ---
Everything up-to-date
$ git push
# 다시 입력해보면 ID가 저장되어 있음
Everything up-to-date
$ git push
# 30초 지나서 다시 시도
Username for 'https://github.com':
credential.helper 옵션의 값을 ‘cache –timeout=30’으로 설정하였다. 이는 30초 동안 저장을 하겠다는 의미이고, 보통 3,600초, 즉 1시간 정도 저장하도록 설정하는 경우가 많다.
2. 리눅스에서 store 옵션 사용하기
사용자 아이디와 패스워드를 임시 저장하는 cache와 달리 store는 한 번 입력한 IP/PW를 영구적으로 저장한다.
$ git config credential.helper store
# 인증 방식 store로 변경
$ git push
# 처음 입력한 ID/PW 저장
Username for 'https://github.com': Orchemi
Password for 'https://Orchemi@github.com': ---
Everything up-to-date
$ git push
# 이후로는 ID/PW 물어보지 않음
Everything up-to-date
store 옵션은 사용하기에 따라서 상당히 편리할 수 있는 명령이다. 하지만 한 가지 문제점으로는 사용자의 ID/PW가 홈 폴더의 .git-credentials 라는 파일에 저장된다는 것이다. 따라서 PW의 노출이 꺼려진다면 store 옵션은 지양하는 것이 좋다.
저장된 PW를 삭제하고 다시 원래대로 매번 PW를 입력하려면 어떻게 해야 할까?
$ git config --unset credential.helper
# 옵션 삭제
$ file ~/.git-credentials
# 인증 파일 정보 확인
/root/.git-credentials: ASCII text
$ rm ~/.git-credentials
# 인증 파일 삭제
credential.helper 옵션을 삭제하였지만 여전히 인증 정보 파일이 남아 있는 것을 알 수 있다. 때문에 store 옵션을 더 이상 사용하지 않는다면 rm 명령을 이용해서 인증 파일 정보도 완전히 삭제한다.
Reference
- 팀 개발을 위한 Git GitHub 시작하기, 한빛미디어, 정호영,진유림
댓글남기기