본문 바로가기

Git/공부기록

GitHub Personal Access Token(PAT) 발급 받는 방법

GitHub에서 Personal Access Token(PAT)을 발급받는 방법에 대해 자세히 알아보겠습니다. PAT은 명령줄에서 Git 작업을 수행하거나 API를 사용할 때 비밀번호 대신 인증 수단으로 사용됩니다.(GitHub Docs)


1. Personal Access Token이란?

Personal Access Token(PAT)은 GitHub API 또는 명령줄에서 GitHub에 인증할 때 비밀번호 대신 사용할 수 있는 대안입니다. PAT은 사용자를 대신하여 GitHub 리소스에 액세스하기 위한 것으로, 조직을 대신하여 리소스에 액세스하거나 장기적인 통합을 위해서는 GitHub App을 사용하는 것이 권장됩니다. (GitHub Docs, GitHub Docs)


2. PAT 발급 방법

2.1 GitHub에 로그인

웹 브라우저에서 https://github.com에 접속하여 계정에 로그인합니다.

2.2 Settings로 이동

오른쪽 상단의 프로필 사진을 클릭한 후, 드롭다운 메뉴에서 Settings를 선택합니다.

2.3 Developer settings 접근

Settings 페이지의 왼쪽 사이드바를 아래로 스크롤하여 Developer settings를 클릭합니다.

2.4 Personal Access Tokens 선택

Developer settings 페이지에서 Personal access tokens을 선택한 후, Tokens (classic) 또는 Fine-grained tokens 중 하나를 선택합니다.

Generate new token 버튼을 클릭하여 새로운 토큰을 생성합니다.

세분화된 개인 액세스 토큰의 주요 차이점은 다음과 같습니다. (GitHub Docs)

  • 사용자가 회원이 아닌 공개 저장소에 기여하기 위해 세분화된 개인 액세스 토큰을 사용합니다.
  • 사용자가 외부 또는 저장소 공동작업자인 저장소에 기여하기 위해 세분화된 개인 액세스 토큰을 사용합니다.
  • 세분화된 개인 액세스 토큰을 사용하여 여러 조직에 동시에 액세스합니다.
  • 세분화된 개인 액세스 토큰을 사용하여 패키지에 액세스합니다.
  • 세분화된 개인 액세스 토큰을 사용하여 Checks API를 호출합니다.
  • 세분화된 개인 액세스 토큰을 사용하여 사용자 계정이 소유한 프로젝트에 액세스합니다.

2.6 토큰 정보 입력

Fine-grained Personal Access Token  생성 방법

더보기

 

  1. 토큰 정보 입력
    • Token name: 토큰의 용도를 식별할 수 있는 고유한 이름을 입력합니다.
    • Description: 토큰의 목적이나 사용처에 대한 설명을 추가할 수 있습니다.
    • Resource owner: 토큰이 접근할 수 있는 리소스의 소유자를 선택합니다. 개인 계정 또는 소속된 조직 중에서 선택할 수 있습니다.
    • Expiration: 토큰의 만료 기간을 설정합니다. 최대 1년까지 설정 가능하며, 기간 없이 설정도 가능합니다.
  2. 리포지토리 접근 설정
    • Public repositories: 공개 리포지토리에 대한 읽기 전용 접근 권한을 부여합니다.
    • All repositories: 선택한 리소스 소유자의 모든 현재 및 미래의 리포지토리에 대한 접근 권한을 부여합니다.
    • Only select repositories: 특정 리포지토리(최대 50개)에 대한 접근 권한을 선택적으로 부여합니다.
  3. 권한(Permissions) 설정 (GitHub Docs)
    • Block another user: 사용자가 차단한 다른 사용자를 조회하고 관리할 수 있습니다.
    • Codespaces user secrets: Codespaces 사용자 비밀을 관리할 수 있습니다.
    • Copilot Chat: GitHub Copilot Chat 세션 메시지 및 타임스탬프에 접근할 수 있습니다.
    • Copilot Editor Context: Copilot Chat을 통해 메시지를 보낼 때 편집기 컨텍스트(예: 현재 열려 있는 파일)에 접근할 수 있습니다.
    • Email addresses: 사용자의 이메일 주소를 관리할 수 있습니다.
    • Events: 사용자의 활동으로 인해 트리거된 이벤트를 조회할 수 있습니다.
    • Followers: 사용자의 팔로워 목록을 조회할 수 있습니다.
    • GPG keys: 사용자의 GPG 키를 조회하고 관리할 수 있습니다.
    • Gists: 사용자의 Gist 및 댓글을 생성하고 수정할 수 있습니다.
    • Git SSH keys: 사용자의 Git SSH 키를 조회할 수 있습니다.
    • Interaction limits: 리포지토리에 대한 상호작용 제한을 관리할 수 있습니다.
    • Knowledge bases: 사용자의 지식 기반을 조회할 수 있습니다.
    • Models: GitHub 모델에 접근할 수 있습니다.
    • Plan: 사용자의 플랜 정보를 조회할 수 있습니다.
    • Private repository invitations: 사용자가 받은 비공개 리포지토리 초대장을 조회할 수 있습니다.
    • Profile: 사용자의 프로필 설정을 관리할 수 있습니다.
    • SSH signing keys: 사용자의 SSH 서명 키를 조회하고 관리할 수 있습니다.
    • Starring: 사용자가 별표한 리포지토리를 조회하고 관리할 수 있습니다.
    • Watching: 사용자가 구독한 리포지토리를 조회하고 변경할 수 있습니다. 

각 권한은 'No access', 'Read-only', 'Read and write' 중에서 선택할 수 있습니다.The GitHub Blog

Classic Personal Access Token 생성 방법

더보기

토큰 정보 입력

  • Token name: 토큰의 용도를 식별할 수 있는 고유한 이름을 입력합니다.
  • Note: 토큰의 목적이나 사용처에 대한 간단한 설명을 추가할 수 있습니다.
  • Expiration: 토큰의 만료 기간을 설정합니다. 설정하지 않으면 무기한 사용되며, 최대 1년까지 설정 가능합니다.
  • Select scopes: 토큰에 부여할 권한의 범위를 선택합니다. 각 스코프는 API 또는 기능별 접근 권한을 의미합니다.

주요 Scope(권한) 설정 (GitHub Docs)

리포지토리 관련

  • repo: 모든 개인 리포지토리에 대한 전체 접근 권한(읽기, 쓰기, 삭제 포함)을 부여합니다.
  • public_repo: 공개 리포지토리에 대한 읽기/쓰기 권한을 부여합니다.
  • repo:status: 커밋 상태 확인 권한을 부여합니다.
  • repo:invite: 리포지토리 초대장 확인 및 수락 권한을 부여합니다.
  • repo_deployment: 배포 상태 및 리소스 접근 권한을 부여합니다.

GitHub Actions 및 보안 관련

  • workflow: GitHub Actions 워크플로우 파일을 읽고 수정할 수 있는 권한을 부여합니다.
  • security_events: 보안 이벤트(Dependabot 등)에 대한 읽기 및 쓰기 권한을 부여합니다.

패키지 관련

  • read:packages: GitHub Packages에서 패키지를 다운로드할 수 있는 권한을 부여합니다.
  • write:packages: GitHub Packages에 패키지를 업로드할 수 있는 권한을 부여합니다.
  • delete:packages: GitHub Packages의 패키지를 삭제할 수 있는 권한을 부여합니다.

조직 및 팀 관리

  • read:org: 조직 및 팀 멤버십 정보를 읽을 수 있는 권한을 부여합니다.
  • write:org: 조직 및 팀 멤버 정보를 읽고 수정할 수 있는 권한을 부여합니다.
  • admin:org: 조직 전체 제어(팀 생성, 삭제 등)를 위한 권한을 부여합니다.
  • manage_runners:org: 조직의 GitHub Actions 러너를 관리할 수 있는 권한을 부여합니다.

사용자 정보 및 SSH/GPG 키

  • read:user: 사용자 공개 프로필 정보를 읽을 수 있는 권한을 부여합니다.
  • user:email: 사용자 이메일 주소를 읽을 수 있는 권한을 부여합니다.
  • user:follow: 다른 유저 팔로우 또는 언팔로우 기능을 사용할 수 있는 권한을 부여합니다.
  • admin:public_key: 공개 SSH 키 전체 관리 권한을 부여합니다.
  • admin:gpg_key: 공개 GPG 키 전체 관리 권한을 부여합니다.

Webhook, 알림, 기타

  • admin:repo_hook: 리포지토리 웹훅 설정 전체 제어 권한을 부여합니다.
  • gist: Gist 생성, 수정, 삭제 권한을 부여합니다.
  • notifications: GitHub 알림 설정 및 메시지 확인 권한을 부여합니다.
  • delete_repo: 리포지토리를 삭제할 수 있는 권한을 부여합니다.
  • codespace:secrets: GitHub Codespaces의 시크릿을 관리할 수 있는 권한을 부여합니다.

Personal Access Token(PAT) 유형 비교

항목Tokens (classic)Fine-grained tokens

도입 시기 기존 방식 2022년 도입
적용 범위 전체 사용자 계정 및 모든 접근 가능한 조직 리포지토리 특정 사용자 또는 조직의 선택된 리포지토리
권한 설정 범위(scope) 기반의 광범위한 권한 설정 리포지토리 및 기능별 세분화된 권한 설정
만료 설정 선택적 필수 (최대 1년)
조직 승인 없음 조직 소유자의 승인 필요 가능
보안성 낮음 높음
지원 범위 모든 GitHub API 및 기능 일부 API 및 기능 제한 있음
추천 사용 사례 광범위한 접근이 필요한 자동화 스크립트 등 보안이 중요한 환경에서의 제한된 접근 필요 시

 

2.7 토큰 생성 및 복사

모든 정보를 입력한 후 Generate token 버튼을 클릭하여 토큰을 생성합니다. 생성된 토큰은 한 번만 표시되므로, 안전한 장소에 복사하여 저장해야 합니다.


3. PAT 사용 방법

3.1 Git 명령어에서 사용

Git 명령어를 사용할 때 비밀번호를 입력하라는 메시지가 나타나면, 생성한 PAT을 비밀번호 대신 입력합니다.

3.2 Git 클론 시 사용

다음과 같은 형식으로 리포지토리를 클론할 수 있습니다:

git clone https://<username>:<PAT>@github.com/<username>/<repository>.git

이렇게 하면 매번 비밀번호를 입력하지 않아도 됩니다.


4. 보안 주의사항

  • PAT은 비밀번호와 동일한 수준의 보안이 필요하므로, 외부에 노출되지 않도록 주의해야 합니다.
  • 필요하지 않은 권한은 부여하지 않는 것이 좋습니다.
  • 토큰이 노출되었거나 더 이상 필요하지 않다면 즉시 삭제해야 합니다.

5. 결론

GitHub의 Personal Access Token은 명령줄이나 API에서 안전하게 인증을 수행할 수 있는 유용한 도구입니다. 위의 단계를 따라 토큰을 생성하고, 필요한 작업에 활용해 보시기 바랍니다.(GitHub Docs)


 

'Git > 공부기록' 카테고리의 다른 글

GitHub Repositories List 로 묶어서 정리하기  (0) 2025.05.13