GitHub 인증 문제 해결하기: 현대적인 Git 인증 방식 완벽 가이드

Git과 GitHub를 사용하다 보면 다음과 같은 에러 메시지를 마주치게 되는 경우가 있습니다:

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/username/repository.git/'

이 글에서는 이러한 인증 문제가 발생하는 원인과 해결 방법에 대해 상세히 알아보겠습니다.

왜 패스워드 인증이 더 이상 작동하지 않는가?

2021년 8월 13일부터 GitHub은 HTTPS를 통한 Git 작업에서 패스워드 인증 방식을 제거했습니다. 이는 보안 강화를 위한 조치로, 더 안전한 인증 방식을 사용하도록 유도하기 위함입니다. 패스워드만으로는 계정 탈취 위험이 상대적으로 높기 때문입니다.

현대적인 GitHub 인증 방식

현재 GitHub에서 권장하는 인증 방식은 크게 세 가지입니다:

  1. 개인 액세스 토큰(Personal Access Token, PAT)
  2. SSH 키 인증
  3. GitHub CLI를 통한 인증

각 방식에 대해 상세히 알아보겠습니다.

1. 개인 액세스 토큰(PAT) 사용하기

PAT는 GitHub 계정의 패스워드 대신 사용할 수 있는 토큰입니다. 특정 권한만 부여할 수 있어 보안 측면에서 더 안전합니다.

PAT 생성 방법

  1. GitHub에 로그인 후 오른쪽 상단의 프로필 아이콘을 클릭하고 ‘Settings’로 이동
  2. 왼쪽 사이드바 하단의 ‘Developer settings’를 클릭
  3. ‘Personal access tokens’ → ‘Tokens (classic)’ 선택
  4. ‘Generate new token’ 클릭
  5. 토큰 이름 설정 및 유효기간 선택
  6. 필요한 권한(scopes) 선택 (최소한 ‘repo’ 권한은 필요)
  7. ‘Generate token’ 버튼 클릭
  8. 생성된 토큰을 안전한 곳에 저장 (토큰은 한 번만 표시됨)

PAT를 사용한 Git 작업

# 저장소 클론하기
git clone https://github.com/username/repository.git
# 사용자 이름 입력 후 비밀번호 대신 PAT 입력

# 또는 URL에 사용자 이름과 토큰을 포함시킬 수 있습니다
git clone https://username:your_token@github.com/username/repository.git

PAT의 장점과 단점

장점:

  • 특정 권한만 부여 가능
  • 필요시 쉽게 폐기 가능
  • 만료 기간 설정 가능

단점:

  • 토큰을 안전하게 관리해야 함
  • 매번 입력해야 하는 번거로움 (자격 증명 관리자 사용으로 해결 가능)

2. SSH 키 인증 방식

SSH 키 인증은 공개키/개인키 쌍을 사용하는 방식으로, 많은 개발자들이 선호하는 방법입니다.

SSH 키 생성 및 설정 방법

  1. SSH 키 생성하기 ssh-keygen -t ed25519 -C "your_email@example.com" # 또는 더 널리 호환되는 RSA 방식 사용 ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. SSH 에이전트 시작 및 키 추가 # ssh-agent 시작 eval "$(ssh-agent -s)" # 개인키 추가 ssh-add ~/.ssh/id_ed25519 # 또는 id_rsa
  3. 공개키를 GitHub 계정에 추가
    • 공개키 복사: cat ~/.ssh/id_ed25519.pub | pbcopy (Mac) 또는 cat ~/.ssh/id_ed25519.pub | clip (Windows) 또는 cat ~/.ssh/id_ed25519.pub
    • GitHub → Settings → SSH and GPG keys → New SSH key
    • 키 제목 입력 및 복사한 공개키 붙여넣기 → Add SSH key 클릭
  4. 연결 테스트 ssh -T git@github.com

SSH를 사용한 Git 작업

# SSH URL을 사용하여 저장소 클론
git clone git@github.com:username/repository.git

# 기존 HTTPS 원격 저장소를 SSH로 변경
git remote set-url origin git@github.com:username/repository.git

SSH 키 인증의 장점과 단점

장점:

  • 한 번 설정하면 재인증 필요 없음
  • 높은 보안성
  • 여러 시스템에서 동일한 키 사용 가능

단점:

  • 초기 설정이 상대적으로 복잡
  • 다른 컴퓨터에서 작업 시 추가 설정 필요
  • 일부 제한적인 네트워크 환경에서는 SSH 포트(22)가 차단되어 있을 수 있음

3. GitHub CLI를 통한 인증

GitHub CLI(Command Line Interface)는 GitHub의 공식 커맨드라인 도구로, 터미널에서 GitHub의 다양한 기능을 사용할 수 있게 해줍니다.

GitHub CLI 설치 및 인증

  1. GitHub CLI 설치
    • macOS: brew install gh
    • Windows: winget install GitHub.cli 또는 scoop, chocolatey 사용
    • Linux: 배포판에 따른 패키지 관리자 사용
  2. GitHub 계정으로 인증 gh auth login # 프롬프트에 따라 인증 방식 선택 (HTTPS/SSH) # 브라우저에서 GitHub 로그인 또는 인증 코드 입력

GitHub CLI를 사용한 저장소 작업

# 저장소 클론
gh repo clone username/repository

# Pull Request 작업
gh pr create
gh pr checkout
gh pr view

# 이슈 관리
gh issue create
gh issue list

GitHub CLI의 장점과 단점

장점:

  • 간편한 인증 프로세스
  • Git 외에도 다양한 GitHub 기능 사용 가능
  • 자동 완성 및 도움말 기능

단점:

  • 추가 도구 설치 필요
  • GitHub 외의 Git 호스팅 서비스에서는 사용 불가

자격 증명 도우미(Credential Helper) 설정

PAT를 사용할 때 매번 입력하는 번거로움을 피하기 위해 자격 증명 도우미를 설정할 수 있습니다.

운영체제별 설정 방법

Windows:

git config --global credential.helper wincred

macOS:

git config --global credential.helper osxkeychain

Linux:

git config --global credential.helper cache
# 캐시 타임아웃 설정 (기본값: 15분)
git config --global credential.helper 'cache --timeout=3600'

또는 Git 자체 저장 방식 사용:

git config --global credential.helper store
# 주의: 비밀번호가 평문으로 저장됨

권한 문제 해결하기

GitHub 인증 외에도 로컬 시스템에서의 권한 문제로 Git 작업이 실패할 수 있습니다. 특히 /var/www 같은 시스템 디렉토리에서 작업할 때 자주 발생합니다.

주요 해결 방법

  1. 디렉토리 소유권 변경 sudo chown -R username:usergroup /path/to/directory
  2. 디렉토리 권한 변경 sudo chmod -R 755 /path/to/directory
  3. 다른 위치에 클론 후 이동 git clone [repository_url] ~/temp_repo sudo mv ~/temp_repo /desired/location

보안 모범 사례

GitHub 인증 작업을 더 안전하게 수행하기 위한 몇 가지 모범 사례를 소개합니다:

  1. 정기적인 PAT 갱신: 개인 액세스 토큰은 정기적으로 갱신하여 보안 위험을 최소화합니다.
  2. 최소 권한 원칙: PAT에 필요한 최소한의 권한만 부여합니다.
  3. SSH 키 암호 설정: SSH 키 생성 시 암호(passphrase)를 설정하여 키 파일이 유출되더라도 추가 보호 계층을 확보합니다.
  4. 2단계 인증(2FA) 활성화: GitHub 계정에 2FA를 설정하여 보안을 강화합니다.
  5. Git 환경에서 토큰 노출 주의: 커밋 메시지나 코드에 토큰이 포함되지 않도록 주의합니다.

결론

GitHub의 패스워드 인증 제거는 초기에는 불편함을 줄 수 있지만, 장기적으로는 더 안전한 개발 환경을 위한 중요한 변화입니다. 개인 액세스 토큰(PAT), SSH 키, 또는 GitHub CLI 중 자신의 작업 환경과 선호도에 맞는 방식을 선택하여 사용하면 됩니다.

각 인증 방식에는 장단점이 있으므로, 본인의 작업 환경과 보안 요구사항에 가장 적합한 방식을 선택하는 것이 중요합니다. 특히 팀 프로젝트나 공개 저장소 작업시에는 보안에 더욱 신경 쓸 필요가 있습니다.

현대적인 GitHub 인증 방식을 사용하면 더 안전하고 효율적인 개발 환경을 구축할 수 있습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다