본문 바로가기

DEVELOP/Git

git clone 실행할 때 repository not found

언제부턴가 Github 리포지토리 clone을 하려고 하면 아래처럼 Not Found 에러가 발생합니다.

➜  git clone https://github.com/projooni/recprop-api.git
Cloning into 'recprop-api'...
remote: Repository not found.
fatal: repository 'https://github.com/projooni/recprop-api.git/' not found

Github 도메인 앞에 계정을 넣고 패드워드 인증을 하려고 했으나, 패드워드 입력 시 인증 실패가 뜹니다.

➜  git clone https://projooni@github.com/projooni/recprop-api.git
Cloning into 'recprop-api'...
Password for 'https://projooni@github.com':
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/projooni/recprop-api.git/'

이는 clone, fetch, pull, push 명령어를 사용할 때 id/pw 기반 인증이 제거되었기 때문입니다. 예전부터 id/pw 기반 인증은 비권장(deprecatd 예정) 이라고 예고되었었는데 결국 막힌 것 같습니다.

위 가이드에서 말하는 “보다 안전한 인증 방법”이란 토큰 방식을 의미합니다. 크게 아래처럼 2가지 방식이 있습니다. 이 중 fine-grained personal access token 방식이 권장되므로 이 방식으로 토큰을 발급받고 인증을 받아보겠습니다.

  • fine-grained personal access token → 권장
  • personal access tokens (classic)

개인용 액세스 토큰 관리 - GitHub Docs

fine-grained personal access token 생성 방법 (가이드)

토큰 발급

  1. GitHub 로그인 후, GitHub의 페이지 오른쪽 상단에서 프로필 사진을 선택한 다음, 설정(Settings)을 선택합니다.

  1. 왼쪽 사이드바에서 개발자 설정(Developer settings)을 클릭합니다.

  1. 왼쪽 사이드바의 Personal access token 에서 Fine-grained tokens을 클릭합니다.
    저는 이미 토큰을 생성해두어서 가렸습니다.

  1. 우측 상단의 새 토큰 생성(Generate new token)을 클릭합니다.
  2. 토큰 이름, 토큰 설명, 소유자, 만료일을 입력합니다.
    만료일은 없음으로 지정이 가능합니다. 갱신이 귀찮았기 때문에 이렇게 지정했지만 보안 관점에서 권장되는 설정은 아닙니다. 소유자는 사용자 또는 조직(Organization)을 선택할 수 있는데, 각 소유자가 소유한 리소스에만 액세스 가능합니다.

  1. 리포지토리 액세스(Repository access)에서 토큰이 액세스할 리포지토리를 선택합니다. 목적에 맞는 최소한의 리포지토리 액세스를 선택해야 하지만 저는 귀찮았으므로 “All repositories”를 선택했습니다. 참고로 토큰에는 항상 GitHub의 모든 퍼블릭 리포지토리에 대한 읽기 전용 액세스가 포함됩니다.

  1. Permissions에서 Repository permissionsAccount permissions를 설정합니다. 원하는 권한에 “Read and Write”를 주면 읽기, 쓰기 권한을 모두 줄 수 있습니다.

모든 Repository 접근 및 권한을 부여

  1. Generate token을 클릭해서 토큰을 생성합니다.

  1. 토큰을 생성하면 아래와 같은 화면과 토큰을 볼 수 있습니다. 토큰은 한 번 만 보여지므로 잘 저장해두도록 합시다.

토큰 사용

토큰은 기본적으로 아래와 같은 패턴으로 사용할 수 있습니다.

https://<사용자 이름>:<토큰>@github.com/projooni/<repository 이름>.git

그런데 이렇게 긴 토큰을 매 번 복사해서 url에 넣기란 너무 불편할 것 같습니다. git credential을 사용해서 토큰을 저장해두면 편리하게 사용할 수 있습니다. 먼저 아래와 같이 credential 저장 명령어를 수행하고, 다시 위 명령어로 토큰을 사용해 git clone을 받으면 자동으로 토큰이 저장됩니다.

$ git config --global credential.helper store

이 명령어의 의미는 “store 모드 활성화” 입니다. 명령어를 수행하고 .gitconfig 를 확인해보면

...
[credential]
    helper = store
...

이렇게 helper가 store로 세팅되어 있는 것을 확인할 수 있습니다. 그렇기 때문에 이후 동일한 호스트에 접근하는 경우, 저장된 인증정보를 자동으로 사용하기 때문에 토큰을 기억하거나 다시 입력할 필요가 없습니다.