EXPLORINEER
ko

Hatena

GitHub CLI가 단기 토큰을 지원하는데도 ghtkn이 필요한 이유

소프트웨어처음 오른 때 점수 32


ghtkn은 로컬 개발용 GitHub 토큰을 가져오는 명령줄 도구입니다. GitHub CLI(gh)에 짧게 유효한 토큰 기능이 생겼지만, 작성자는 ghtkn이 여전히 필요하다고 주장합니다.

무슨 일이 있었나요?

GitHub CLI(gh)가 몇 시간 뒤 사라지고 자동으로 새로 발급되는 짧은 수명의 토큰을 지원하기 시작했습니다. 아직 공개 미리보기 단계이고, 사용자가 직접 켜야 합니다. GitHub는 나중에 이 기능을 기본값으로 만들 계획입니다. 작성자는 이 때문에 ghtkn이 필요 없어졌다는 생각에 반대하며, 계속 ghtkn을 개발하겠다고 밝혔습니다.

토큰은 어떻게 작동하나요?

ghtkn은 GitHub 앱에서 사용자 액세스 토큰을 받아 로컬 개발에 쓰게 해 줍니다. 액세스 토큰은 8시간이 지나면 만료됩니다. 리프레시 토큰은 더 오래 가며, 만료된 액세스 토큰 대신 새 액세스 토큰을 받게 해 줍니다. 리프레시 토큰을 누군가 훔치면 계속해서 새 액세스 토큰을 만들 수 있으므로, 이 토큰을 지키는 것이 핵심입니다.

주요 숫자와 사실

  • 액세스 토큰은 8시간 뒤 만료됩니다.
  • 6개월 동안 쓰지 않은 리프레시 토큰은 만료됩니다.
  • 리프레시할 때마다 새 리프레시 토큰이 발급됩니다.
  • gh는 기본적으로 토큰을 OS 키링에 저장합니다. 키링 저장이 실패하면 일반 텍스트 파일 hosts.yml에 저장하고, 한 줄 경고만 보여 줍니다.
  • gh 토큰은 repo, read:org, gist 권한이 최소한 필요해서 읽기 전용으로 만들 수 없습니다.

왜 중요한가요?

작성자는 gh가 짧은 토큰을 도입한 뒤에도 ghtkn의 보안 장점이 여전히 중요하다고 말합니다. ghtkn은 리프레시 토큰을 암호화하고, 에이전트 API로 절대 돌려주지 않습니다. 또 앱이 설치된 조직과 저장소로만 접근을 제한하며, 사용자가 권한이 다른 앱을 고를 수 있게 합니다. 리프레시 토큰을 일반 텍스트로 저장하지도 않습니다. 반면 gh 토큰은 사용자가 접근할 수 있는 모든 저장소에 닿을 수 있습니다.

앞으로 지켜볼 점

  • GitHub CLI의 짧은 수명 토큰이 기본값이 되는지, 그리고 그때 토큰 저장 방식이 어떻게 바뀌는지
  • macOS에서 설명된 OS 키링의 약점이 고쳐지는지, 아니면 바뀌는지
  • v0.4.2 이후 ghtkn의 docs 명령과 ghtkn 에이전트 스킬

용어 풀이

ghtkn
로컬 개발에서 GitHub 사용자 액세스 토큰을 받아 주는 명령줄 도구입니다.
액세스 토큰
GitHub에 접근할 수 있는 권한을 증명하는 임시 열쇠입니다. 8시간 뒤 만료됩니다.
리프레시 토큰
만료된 액세스 토큰을 대신할 새 액세스 토큰을 받을 때 쓰는 더 오래 가는 토큰입니다.
OS 키링
운영체제가 비밀번호나 토큰 같은 민감한 정보를 안전하게 보관하는 저장소입니다.
hosts.yml
gh가 키링 저장에 실패했을 때 토큰을 일반 텍스트로 저장하는 설정 파일입니다.

출처: Hatena에서 원문 보기 ↗

이 글은 원문을 바탕으로 AI가 쉬운 말로 다시 쓴 해설입니다. 사실관계는 원문을 확인하세요.