Home

Gabriel's Blog

<맨 위로>
14 May 2022   | #팁 #응용

Git 포터블에 영구 인증 적용하기

개요

bash 창에서 Git push 명령어를 사용하면 권한 인증 절차를 거치게 된다. 매번 비밀번호를 입력하기 귀찮다면, 인증 정보를 저장하기 위해 Git Credential이 제공하는 여러 기능을 이용할 수 있다. 자세한 내용은 아래 링크를 참조하자.

Git 공식 레퍼런스

그러나 portable 버전의 Git을 사용하고 있다면 얘기가 달라진다. Git Credential의 store 옵션은 사용자의 홈 디렉토리에 인증 키를 저장하기 때문이다. 다른 장치에서 사용 시 새로 인증해야 됨은 물론이고 키 유출이 일어날 수도 있다. 이를 해결해 보자.


config 파일 구조

Git의 사용자 설정은 config파일에 기록된다. 한편 이 파일은 크게 세 가지로 나누어진다.

  1. {Git 설치 경로}/etc/gitconfig: 모든 사용자, 모든 저장소에 적용되는 전역 설정. git config --system 옵션으로 수정할 수 있다.
  2. {홈 디렉토리 경로}/.gitconfig: 특정 사용자의 모든 저장소에 적용되는 전역 설정. git config --global 옵션으로 수정할 수 있다.
  3. {저장소 경로}/.git/config: 특정 저장소에만 적용되는 설정. git config --local 옵션으로 수정할 수 있다.

아래로 갈수록 지역성이 높아지고 우선도는 높아진다. 즉 로컬 설정이 가장 우선도가 높다. portable 버전의 Git을 사용하고 있다면 2번의 옵션은 지양해야 한다. 인증 정보는 전역적으로 적용되는 것이 편리하기 때문에, 우리는 1번 옵션을 사용한다.

이와 관련된 자세한 정보는 역시 공식 레퍼런스를 참조하자.

공식 레퍼런스


설정하기

필자의 경우 드라이브 최상단에 credit이라는 인증 파일을 만들었다.

https://Gabriel_Dropout:{인증 키}@github.com

데이터는 위와 같은 형식이다. 이제 Git/etc/gitconfig파일에 다음 항목을 추가하자.

[credential]
    helper = store --file ${PWD:1:1}:/credit

--file 옵션으로 인증 파일의 경로를 지정할 수 있다.

${PWD:1:1}에 주목하자. Git이 USB에 저장되어 있으면 드라이브 경로를 알 수 없다. 따라서 현재 git이 설치된 디렉토리의 첫 번째 알파벳을 가져오는 것이다. 쉘 스크립트 문법 중 하나인데, 사실 자세히는 모른다.

이 또한 자세히 알아보고 싶다면 다음 링크에 들어가면 된다.

Shell Script 문자열 조작


여담

USB에 인증 정보가 plain text로 저장되므로 분실하지 않도록 주의하자.

이걸 주운 사람이 하필 git을 사용할 확률이 얼마나 되겠냐마는…

그럼 다음에,
Gabriel-Dropout at 19:31

scribble