원격 저장소에 로컬의 변경 사항을 push 하기 전에 GitHub 원격 저장소에 대한 인증이 필요하다.
예전에는 아이디/비밀번호로 인증했지만, 현재는 Personal Access Token(PAT) 또는 SSH 키를 사용해야 한다. 처음 인증이 완료되면, 이후에는 저장된 인증 정보로 자동 로그인 된다.
Personal Access Token(PAT) 사용
1. GitHub Token 생성 페이지로 이동
2. Fine-grained personal access tokens을 클릭하여 새 토큰을 생성한다.
3. push하려는 저장소의 접근 권한과 Contents(Read and write), Metadata(Read-only) 권한을 설정하였다.
4. 토큰을 복사한다. 잃어버리면 다시 생성해야하므로 주의한다.
5. PAT를 매번 입력하는 것은 불편하므로 Git 자격 증명 저장소(credential helper)를 사용하여 자동으로 저장할 수 있다. 전역 설정이므로 현재 로컬 저장소 뿐만 아니라 모든 Git 저장소에서 동일하게 적용된다.
$ git config --global credential.helper store # 한 번 입력하면 파일에 평문으로 영구 저장
$ git config --global credential.helper cache # 한 번 입력하면 일정 시간(기본 15분) 동안만 저장
$ git config --global credential.helper manager # Windows의 Windows Credential Manager 사용
저장된 PAT를 삭제하려면 아래 명령어를 사용한다. (store 방식)
$ rm ~/.git-credentials
만약, Git Credential Manager(GCM)나 cache 방식으로 변경하면 아래 명령으로 PAT를 삭제할 수 있다.
$ git credential reject https://github.com
unset을 사용하면 Git이 더 이상 PAT를 저장하지 않는다.
git config --global --unset credential.helper
6. 마지막으로, Github 인증 시 패스워드에 토큰을 입력하면 된다. GitHub 저장소에 대한 쓰기 권한이 없다는 에러가 뜬다면 토큰을 생성할 때 권한을 적절하게 부여하였는지 확인해 볼 필요가 있다. 위에서 PAT 자격 증명을 저장했으므로 이후 로그인 과정은 필요 없다.
$ git push origin master
SSH 사용
1. SSH 키를 생성한다. 기본 설정으로 키를 생성할 수도 있지만 알고리즘과 강도, 키에 주석을 추가하는 옵션을 사용하여 생성할 수도 있다.
$ ssh-keygen
$ ssh-keygen -t rsa -b 4096 -C "jungminsu07150@gmail.com"
2. 패스프레이즈를 설정하면 추가적인 보안 계층이 생기며 서버에 접근하여 SSH 키를 사용할 때마다 비밀번호를 입력해야하기 때문에 개인 키가 탈취되더라도 패스프레이즈 없이는 사용할 수 없다. 설정하지 않을 경우 엔터로 넘어가면 된다.
3. 생성된 공개키를 확인한다.
4. GitHub SSH 키 설정 페이지에서 SSH 키를 추가한다.
5. Github가 SSH 키를 인식하는지 확인한다. 이 과정에서 ~/.ssh/known_hosts 파일에 SSH 서버의 공캐키가 저장되며 SSH를 통해 접속하는 서버의 신원을 확인하는 용도로 사용한다.
6. 만약 ~/.ssh/known_hosts 파일에 새 공개키를 등록하려면 아래 명령어로 GitHub 키를 삭제하면 된다. 이후 다시 SSH로 접속하면 GitHub의 새로운 키를 받을 수 있다.
$ ssh-keygen -R github.com
7. 원격 저장소 url을 확인한다. 만약, 원격 저장소 url이 아래와 같이 HTTPS 방식이라면 SSH 방식으로 변환해야 한다.
8. 원격 저장소를 SSH 방식으로 변경한다.
git remote set-url origin git@github.com:bde574786/github-test.git
9. 이후 비밀번호 없이 SSH 키를 사용하여 Github에 push가 가능하다.
'Git' 카테고리의 다른 글
원격에서 자동으로 내려받기 (0) | 2025.03.02 |
---|---|
서버 전송 (0) | 2025.03.02 |
깃허브 연동 및 원격 등록 (0) | 2025.03.02 |
번경된 내용 비교 (0) | 2025.03.02 |
수정된 파일 되돌리기 (0) | 2025.03.02 |