초보자를 위한 GitHub: 자주 묻는 질문에 대한 답변 (새 탭에서 열림)
이 글은 GitHub 초보자가 자주 묻는 SSH 키와 Personal Access Token(PAT)의 개념, 생성 방법, 보안상 주의점을 설명한다. SSH는 컴퓨터의 개인 키와 GitHub에 등록한 공개 키를 이용해 인증하며, PAT는 명령줄이나 API 접근에 사용하는 권한 기반 자격 증명이다. 글의 후반부에서는 병합과 리베이스 차이도 다룰 예정이지만, 제공된 내용은 해당 질문의 제목에서 끝난다. ## SSH 키의 개념과 역할 - SSH 키는 다음 두 파일로 구성된 키 쌍이다. - **개인 키(private key)**: 컴퓨터에 보관하며 절대 공유하지 않는다. - **공개 키(public key)**: GitHub 등에 등록해도 된다. - GitHub는 등록된 공개 키와 사용자의 컴퓨터에 있는 개인 키가 일치하는지 확인해 인증한다. - SSH를 설정하면 GitHub에 코드를 push하거나 pull할 때 비밀번호를 반복해서 입력하지 않아도 된다. ## SSH 키 생성 및 ssh-agent 등록 - 터미널에서 Ed25519 방식의 키를 생성한다. ```bash ssh-keygen -t ed25519 -C YOUR_EMAIL@DOMAIN.COM ``` - 저장 경로를 물으면 기본 경로를 사용하기 위해 Enter를 누른다. - 개인 키를 보호할 passphrase를 설정한다. - `ssh-agent`는 개인 키를 안전하게 보관해 매번 passphrase를 입력하지 않도록 돕는다. - 생성한 키를 agent에 추가한다. ```bash ssh-add ~/.ssh/id_ed25519 ``` ## 공개 키를 GitHub에 등록하기 - 공개 키 내용을 확인한다. ```bash cat ~/.ssh/id_ed25519.pub ``` - 출력된 한 줄 전체를 복사한다. - GitHub에서 다음 순서로 등록한다. - 프로필 사진 → **Settings** - 왼쪽 메뉴의 **SSH and GPG keys** - **New SSH key** - 기기를 식별할 수 있는 제목 입력 - 복사한 공개 키 붙여넣기 - **Add SSH key** 클릭 - 개인 키는 GitHub에 업로드하지 않고 로컬 컴퓨터에만 보관해야 한다. ## Personal Access Token(PAT)의 용도 - PAT는 GitHub 도구, 명령줄, GitHub API에서 사용하는 별도의 인증 자격 증명이다. - 토큰마다 접근 가능한 저장소와 권한을 지정할 수 있다. - 필요할 때 폐기(revoke)할 수 있으며, 만료일도 설정할 수 있다. - PAT는 생성 직후 한 번만 표시되므로 비밀번호 관리자 등 안전한 장소에 즉시 저장해야 한다. - 터미널에서 GitHub 비밀번호를 요구할 때 비밀번호 대신 PAT를 사용할 수 있다. ## Fine-grained PAT 생성 - GitHub의 **Settings → Developer settings → Personal access tokens → Fine-grained tokens**로 이동한다. - 토큰 이름과 용도를 설명하는 설명을 입력한다. - 만료일을 지정한다. - 토큰이 접근할 저장소를 전체 또는 특정 저장소로 제한한다. - 필요한 권한을 추가하고 각 권한을 읽기 전용 또는 읽기·쓰기 모드로 설정한다. - 생성 전 설정을 검토한 뒤 토큰을 생성한다. - 권한 범위를 좁게 설정하면 토큰이 유출되었을 때의 피해를 줄일 수 있다. ## Classic PAT 생성 - **Settings → Developer settings → Personal access tokens → Tokens (classic)**으로 이동한다. - **Generate new token (classic)**을 선택한다. - 토큰 이름과 만료일을 지정한다. - 필요한 scope를 선택한다. - 토큰을 생성한 뒤 표시되는 값을 안전하게 복사한다. - Classic 토큰은 권한 범위가 더 포괄적일 수 있으므로, 가능한 경우 필요한 저장소와 권한을 세밀하게 제한할 수 있는 fine-grained 토큰을 우선 고려하는 것이 좋다. ## 실용적인 보안 권장 사항 - SSH 개인 키와 PAT를 다른 사람에게 공유하지 않는다. - PAT에는 필요한 저장소와 최소 권한만 부여한다. - 토큰에는 만료일을 설정하고 더 이상 사용하지 않으면 폐기한다. - PAT는 비밀번호나 소스 코드에 직접 기록하지 말고 비밀번호 관리자나 안전한 시크릿 저장소에 보관한다. - 제공된 글에는 병합(merge)과 리베이스(rebase) 설명이 이어질 예정이지만, 해당 내용은 포함되어 있지 않다.