개발을 하다 보면 git은 꼭 사용하게 된다. 협업을 할 때나 혹은 오픈소스를 클론 해서 사용하는 등 개발자와는 뗄 수 없는 도구라고 할 수 있다.
최근 홈서버를 구성하기 위해 pc에 리눅스를 설치하고 CI/CD 환경을 구축하려고 하니 기존의 github 아이디를 이용해 다른 pc에서 작업해야 하는 상황이 발생했다. 프로젝트를 클론하고 수정하려는데 레포지토리 수정에 대한 권한이 없다는 permission deny가 발생했다. 이전 pc에서는 깃허브 아이디와 비밀번호만 가지고도 사용자 확인이 되었던 것 같은데 최근에 보안정책이 바뀌었다고 하는 것 같다.
인증방법에는 세 가지가 있다.
첫 번째, 깃허브 아이디를 컨트리뷰터로 등록하는 방법
이 것은 깃허브에 등록된 이메일이나 아이디를 등록하는 방식으로 공동 기여자가 되는 방식인데 나는 하나의 아이디로 여러 로컬 pc에서 작업하길 원했기 때문에 이 방법은 고려하지 않았다.
두 번째, SSH를 통해 인증키를 등록하는 방법
처음에 ssh로 인증을 하기 위해 open-ssh 패키지로 공개키를 생성하여 깃허브에 등록해 보았으나 알 수 없는 오류로 실행이 되지 않았다. ssh방식은 레퍼런스도 많지 않아 트러블 슈팅도 쉽지 않아 다음 방법을 시도해 보게 되었다.
세 번째, pat(personal access token) 토큰을 사용하는 방법
차선으로 선택한 pat토큰은 사용자의 깃허브 설정탭에서 생성할 수 있다. 토큰은 문자열로 이루어져 있고 이 토큰을 보관하고 있다가 git에 원격으로 push 등의 작업을 요청할 때 토큰을 함께 보내게 되면 그 토큰으로 사용자를 식별하게 된다. 발급도 간단하고 사용법도 매우 간단했다.
그래서 오늘은 아래의 순서로 git설치부터 시작해서 pat토큰을 사용하는 방법까지 다뤄보려 한다.
1. Ubuntu에 깃 설치
2. 로컬 사용자 등록하기
3. pat 토큰 발급 및 환경변수 등록
4. 레포지토리 클론
5. 소스코드 변경 및 push
pat토큰 인증
1) Ubuntu에 깃 설치
리눅스가 편한 점은 패키지 이름만 알고 있으면 너무나 쉽게 설치할 수 있다는 점이다. 윈도우 환경에서 git을 설치할 때도 크게 어려운 점은 없었지만 리눅스는 그보다 훨씬 편하다.
#git 설치
sudo apt install git
#git 버전확인
git --version
나는 git이 이미 깔려 있어서 설치작업이 매우 간편하게 끝났다. 이미 최신버전이라는 안내문이 나오는 것을 확인할 수 있다.
버전체크를 통해 git이 잘 설치되었는지 확인해보자.
2) 로컬 사용자 등록하기
깃을 설치하면 로컬 사용자명과 이메일을 등록해주어야 한다. 사용자 등록 없이 작업을 시도하려고 하면 아래와 같은 메시지가 출력되는데 "Please tell me who you are." 라며 사용자를 등록하라고 한다.
#로컬사용자 아이디등록
git config --global user.name "<사용자 id>"
#로컬사용자 이메일등록
git config --global user.email "<사용자 email>"
다음 명령어를 이용해 사용자를 등록해 주도록 한다. 어차피 pat 토큰을 이용해 사용자 인증이 되기 때문에 사용자명은 아무렇게나 해도 크게 상관없는 듯하다.
3) pat토큰 발급 및 환경변수 등록
#settings
오른쪽 위에 사용자를 클릭하면 사이드바가 노출된다. 여기서 `settings`를 선택한다.
#Developer settings
그러면 다음과 같은 설정화면이 나오는데 여기서 왼쪽 사이드바 맨 아래쪽에 `Developer settings`를 클릭한다.
#Tokens(classic)
그러면 화면이 이동되는데 여기서 Personal access token -> Token(classic)를 클릭한다. 새로운 버전은 beta버전이기 때문에 검증된 classic 버전을 사용하도록 하겠다.
#token설정
*Note: 토큰이름
*Expiration: 토큰의 유효기간이다. 상황에 맞게 설정해 주도록 한다. 나는 로컬 pc에서만 사용할 예정이기 때문에 No exporation을 선택했다.
그다음 `Select scopes`라는 탭이 매우 복잡해 보이는데 다양한 권한을 부여할 수 있는 기능이다. 내가 사용할 기능은 레포지토리에 접근하고 수정만 하면 되기 때문에 `repo`탭만 체크를 해주고 나머지는 그대로 둔다.
마지막으로 `Generation token` 버튼을 누르면 토큰이 생성된다.
#token 생성 완료
초록색 바탕에 문자열이 나온다. 이 문자열이 바로 토큰인데 ghp_...으로 시작하는 것 보면 GitHubToken의 줄임말이 아닐까 한다.
이때 주의해야 할 점은 안내문에도 있다시피 이 문자열은 처음에 딱 한 번만 발급되고 페이지를 벗어나게 되면 다시는 확인이 불가능하다. 때문에 파일에 저장해 놓는 등으로 따로 보관을 해야 한다.
나는 토큰을 저장도 하면서 사용도 편하도록 하기 위해 우분투의 환경변수로 토큰을 저장해 주었다. 우분투에서 환경변수에 등록하는 방법은 아래 방법을 따르면 된다.
#.bashrc파일 수정하기
vim ~/.bashrc
#환경변수에 토큰 등록하기
export GITHUB_TOKEN="<your PAT token>"
#변경내역 적용
source ~/.bashrc
#환경변수 출력해보기
echo $GITHUB_TOKEN
일단 `vi`나 `nano`, `vim` 등 어떤 편집기라도 상관없으니 편집기를 사용하여 `. bashrc`파일을 연다.
참고로 리눅스 환경에서는 파일명 앞에 `.` 이 들어가 있으면 숨김파일이라는 뜻이다. 숨김파일을 조회해 보려면 `ls` 명령어에 `-al` 옵션을 붙이면 모든 파일을 조회 가능하다.
`. bashrc` 파일 내부는 다음과 같이 생겼는데 맨 아래쪽에 환경변수를 추가해 준다. 아까 받은 토큰 문자열을 넣어주면 된다.
파일에 환경변수가 추가되었기 때문에 `source` 명령어로 변경내역을 현재 세션에 바로 반영한다. `echo`로 GITHUB_TOKEN으로 등록한 환경변수가 잘 출력되는지 확인해 본다. 내가 등록한 토큰의 문자열이 잘 출력되는 것을 확인할 수 있다.
4) 레포지토리 clone
git clone https://$GITHUB_TOKEN@github.com/<github 아이디>/<레포지토리>.git
토큰을 이용해 클론을 하려면 기존 주소에 위와 같은 방식으로 토큰을 추가해서 보내면 된다. 토큰을 통해 사용자 인증이 되기 때문에 로그인 과정이 따로 필요하지 않다.
프로젝트가 잘 다운로드된 것을 확인할 수 있다.
5) 소스코드 commit, push
clone 받은 프로젝트에 변경사항을 적용시킬 수 있는지 테스트를 해보기 위해 기존 프로젝트에 변경내용을 추가해 보자.
나는 vscode를 사용해 `testfile.txt`라는 이름으로 파일을 하나 생성해 주고 내용을 추가해 주었다.
그다음 변경사항을 추가하고 커밋을 한다.
마지막으로 push까지 해주었다. 성공적으로 레포지토리의 main브런치에 반영되었다.
github에서도 커밋한 내역을 확인 가능하다.
이번 포스팅에서는 리눅스에 git을 설치하고 pat토큰을 발급받아 레포지토리에 접근하는 방법을 다뤄보았다. 윈도에서 jdk를 깔 때마다 환경변수를 등록해서 사용하곤 했는데 리눅스환경에서 환경변수를 직접 등록하고 출력하는 과정을 경험해 보니 추상적이었던 환경변수개념을 좀 더 구체적으로 이해하게 되었다.