AIFFEL LMS 콘솔에서 git 로그인을 자동으로 설정하기

git pull/push를 할 때 password를 매번 입력해주는 것은 상당히 번거로운 일이다.

git bash에서 로그인 절차를 생략하는 일은 간단하다. 명령어 단 한 줄이면 된다. (참고 : https://assiduity.tistory.com/77)

하지만, AIFFEL의 LMS 콘솔에서는 위 방법이 먹히지 않는다.

git config --global 설정이 저장되는 경로가 "~/.gitconfig"인데, AIFFEL이 제공하는 리눅스 클라우드의 경우 "~/aiffel" 디렉터리를 제외한 나머지는 자동으로 초기화되기 때문이다. (참고 : https://coding-groot.tistory.com/97)

그래서 AIFFEL LMS에서 git 로그인을 자동으로 설정하기 위해서는 .gitconfig 파일이 저장되는 경로를 "~/aiffel" 디렉터리 하위에 위치하도록 바꿔주어야 한다.

방법 1. Home 디렉터리 변경

가장 쉬운 방법은 Home 디렉터리를 변경하는 것이다. 하지만 Home 디렉터리를 변경하면 차후 LMS 노드 진행에 불편이 있을 수 있다. 그래서 이 방법은 개인적으로 권장하지 않는다.

방법 2. config 파일 경로 변경 명령어 이용

(참고 : https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%B5%9C%EC%B4%88-%EC%84%A4%EC%A0%95)

이 시스템 설정 파일의 경로는 git config -f 명령으로 변경할 수 있다. 관리자 권한이 필요하다.

리눅스에서도 이 방법을 따르면 되지 않을까? 시도해 보았다.

긴 말 하고 싶지 않다. 어째선지 명령어가 작동하지 않는다.

방법 3. 심볼릭 링크 이용

정녕 리눅스 환경을 바꾸지 않고 .gitconfig 파일의 경로만 바꿀 수 있는 방법이 없을까?

한 가지 있었다. 심볼릭 링크를 만드는 방법이다.

(참고 : https://stackoverflow.com/questions/4050905/changing-gitconfig-location-on-windows)

하지만 이 심볼릭 링크도 결국 홈 디렉터리에 위치한다면 초기화된다. 

하... 초기화되는 환경에서 설정 파일이 유지되도록 하는 방법을 연구하느라 삽질하다 보니, 저번에 Synology Web Station 구축하면서 Apache/PHP 설정을 바꿀 때의 악몽이 되살아나는 것 같다.

방법 4. Git 환경변수 바꾸기

(참고 : https://devpouch.tistory.com/125, https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98)

Git 환경 변수를 바꾸려다가, 생각해보니 이 모든 방법들을 시도 해선 안 된다!

그 이유는 AIFFEL이 클라우드 방식으로 bash 쉘을 제공하기 때문에, git 환경변수를 바꿔버리면 모든 LMS 사용자에게 영향이 갈 수도 있다.

애초에 git도 내가 설치한 게 아니라 이미 설치되어 있었다.

물론 보안 처리가 되어 있지 않아서 관리자 권한을 얻는 건 매우 쉽지만, 할 수 있는 것과 해도 되는 것은 엄연히 다르다.

방법 5. Shell Script 매크로 작성하기

하는 수 없이 자동 로그인은 포기한다. 그 대신에 반자동(?) 매크로라도 구현한다.

결국 AIFFEL 리눅스 클라우드에서 global credential.helper store는 불가능하다. 그나마 가능한 건 local credential.helper store이다. 

이걸 매번 입력해주기 번거로우니 리눅스 쉘 스크립트(sh)를 이용해서 자동 로그인 설정을 자동으로 해 주는 걸 구현해 보겠다.

$ vi git_macro.sh

git init

git config credential.helper store
git config --global user.email [email protected]
git config --global user.name "Jaehyeop Lee"

echo "# aiffel-exp3" >> README.md
git add .
git commit -m "first commit"
git branch -M main
git remote add origin $1
git push -u origin main

Esc 누른 후 :wq 입력하여 저장하고 닫았다. 

$ sh git_macro.sh

정상적으로 매크로가 동작하는 걸 볼 수 있다.

다른 디렉터리에서도 정상적으로 실행되는 걸 확인할 수 있다.

git_macro.sh는 AIFFEL 디렉터리로 옮겨주었다.

이제 git 디렉터리를 만들 때마다 내부에서 git_macro.sh를 실행시켜주면 된다.

$ sh ~/aiffel/git_macro.sh <github_repository_url>

이걸 응용해서 push 시 ID / Password(Token) 입력까지 자동화 할 수 있는지는 잘 모르겠다. (HTTP 인증 방식을 시도해봤지만 실패했다. 참고 : https://dolsup.work/tech-blog/different-ways-to-access-github-repository/)

Shell Script 매크로 방식의 단점

  • sh 파일을 작성하기 귀찮다.
  • (ID, Password까지 자동화 한 경우 해당) 보안이 취약하다. Email, Name, ID, Password가 고스란히 sh 파일에 기록된다. 현재 AIFFEL에서 제공하는 LMS 보안이 취약하다는 점을 고려하면 꺼림직한 부분이다.

Shell Script 매크로 방식의 장점

  • 아래와 같은 깃 명령어를 무려 1줄로 줄여준다. 드라마틱 하진 않지만, 충분히 생산성을 높여준다고 말할 수 있다. 또한, 이렇게 한번 로그인을 하고 나면 다시 로그인을 해 줄 필요가 없어진다.
git init

git config credential.helper store
git config --global user.email [email protected]
git config --global user.name "Jaehyeop Lee"

echo "# aiffel-exp3" >> README.md
git add .
git commit -m "first commit"
git branch -M main
git remote add origin $1
git push -u origin main

좋은 웹페이지 즐겨찾기