본문 바로가기
목차
utils/git and github

PAT를 통한 authentication for GitHub

by ds31x 2026. 1. 14.
728x90
반응형

PAT란

  • Personal Access Token의 약어로,
  • 기존의 GitHub 계정 password 대신에 사용되는 긴 문자열 Token임.

HTTPS 프로토콜로 git push / pull 할 때,
password 자리에 PAT를 넣으면 인증이 됨.

현재 보안 문제로 password 를 통한 push / pull 은 안되는 상황이므로 이를 대체하는 방법임.

 

비밀키 / 공개키 기반의 authentication 을 권장하나...

Token이 직관적인 측면이 있어서 password 처럼 이용하는 이들도 있음

 

키 관련해서 다음을 참고:


PAT 발급받기

GitHub는 PAT를 다음의 두가지 종류로 제공함:

  • Fine-grained Token
  • Classic Token

Fine-grained PAT의 경우, 대상 저장소 및 허용권한을 매우 세밀하게 조정이 가능해서 보다 권장됨

Classic PAT의 경우는 현재 호환성을 위해 남아있는 상황으로 가급적이면 Fine-grained PAT를 사용하는게 좋음

 

Fine-grained PAT의 발급은 다음과 같음.


우선 GitHub의 Settings 를 클릭

왼쪽 사이드바의 아래에 있는 Developer settings 클릭

Personal access tokens 에 있는 Fine-grained tokens를 클릭하면 Generate new token 버튼이 보임.
이를 클릭.

우선 Token의 이름을 짓고, 사용 용도를 description에 기재

이후 Expiration Date (기본으로 30일) 를 정하고, 대상으로할 repository를 선택.

아래의 Permissions 에서 필요한 최소권한을 주기 위해 Add permissions 를 클릭하고 보이는 여러 권한 중에서 Content를 선

이후 Content에 대해 Read and wirte 권한을 부여하면 repository를 수정할 수 있음

이 후 아래의 Generate token 버튼을 클릭

이후 confirm을 위한 창이 뜸. 역시 Generate token을 클릭

이후 생성된 Token을 확인할 수 있음

상당히 긴 문자열(붉은 색 박스)이기 때문에 외우기 어려워서 자동으로 입력해주는 Credential Helper를 이용하는 게 일반적임.

(이후로는 확인할 수 없으므로 복사해놔야함)


Credential Helper 사용하기:

Git core는 인증 정보를 직접 저장하지 않으며 대신 credential helper라는 외부 프로그램을 호출하여
인증 정보에 대한 “저장(store)”, “조회(get)”, “삭제(erase)”를 위임함.

 

대표적인 Credential Helper로는 다음이 있음:

helper 저장 위치
cache RAM (메모리, cache-daemon)
store 평문 파일 (~/.git-credentials)
manager Windows Credential Manager (GCM)
osxkeychain macOS Keychain

 

단, 공용장비에서 사용할 경우 위험하므로

  • in-memory cache 방식으로 동작하면서
  • credential TTL (Time To Live)를 second단위로 할당해 주는 게 좋음.

 

다음은 현재 local repository (.git/config)에서 앞서 만든 Token을 3시간(=10,800초) 정도 메모리의 캐시로 저장하여 사용하는 명령어임.

git config credential.helper "cache --timeout=10800"

 

로컬 전체의 repositories (~/.gitconfig)에서 쓰려면 --global 옵션을 추가해주면 됨.

git config --global credential.helper "cache --timeout=10800"

이를 사용하면 한번 인증한 경우 3시간 동안 추가 인증없이 사용가능함.


참고: Windows의 GCM 사용시 유의할 점.

Windows에서는 Git이 아니라 GCM이 “진짜 저장 주체”인데 앞서 명령어의 in-memory chache 방식을 무시하여 문제가 있음.

참고로 Windows 의 GCM 을 사용할 때엔 위의 명령어 대신 다음을 사용하는 것을 추천함:

git config --global --replace-all credential.credentialStore cache
git config --global --replace-all credential.cacheOptions "--timeout 10800"

 

Window GCM 에선 위 명령어로 사용하고, 다 사용하고 나면 아예 관련 인증정보를 지우는게 나음.

 

다음은 자격증명(Credential)을 지우는 명령어임

git credential-manager erase
protocol=https
host=github.com
  • 마지막에 empty new lien 필요 (입력이 끝났음을 의미함).
  • GCM이 관리하는 자격 증명 중 github.comd 으로 관리되는 것들을 지움 
  • path=ds31x/ds31x.github.io.git 과 같이 계정명/repository명 을 추가하면 해당 repository만 삭제함. (추천).

다음의 방식도 가능:

printf "protocol=https\nhost=github.com\n\n" | git credential-manager erase
  • printecho로 변경 가능.

 

다음의 명령어로 GUI에서 확인 및 삭제도 가능함:

control keymgr.dll

Windwos 자격 증명에서 일반자격증명을 살펴볼 것.

 

Windows에서 Git Credential을 삭제하는 자세한 내용은 다음을 참고:
https://www.claudiuscoenen.de/2023/11/removing-git-credentials-windows/?utm_source=chatgpt.com

728x90