본문 바로가기
git

[TIL] Git Server

by marble25 2022. 5. 15.

git 시스템은 아마 개발자들이 가장 많이 이용하는 시스템 중 하나이다. 

다양한 사람들이 작성한 소스를 합치고 소스코드를 버전 관리할 수 있기 때문이다.

이를 위해 원격 저장소로는 github, gitlab 등 다양한 플랫폼이 존재한다.

하지만, 이들 서버로는 만족하지 못하는 경우가 존재하는데, 예를 들어 1) private 환경에서 서버를 구동하거나 2) 파일의 용량이 너무 큰 경우 가 존재할 수 있다.

위와 같은 니즈가 존재할 때 필요한 것이 custom git server이다. 

 

설치하기 

기본적으로 원격 저장소의 경우 워킹 디렉터리가 없는 bare 형태로 되어 있다. 실제 데이터는 없고 git 데이터만 존재한다.

$ git clone --bare my_project my_project.git

 

프로토콜

git 저장소와 통신할 수 있는 방법은 크게 4가지 있다.

 

로컬 프로토콜

리모트 저장소가 단순히 같은 시스템의 다른 디렉토리에 있을 때 사용한다.

$ git clone /srv/git/project.git

저장소 구성하기가 너무 간단하지만, 디렉터리를 공유하는 것이 일반적으로 어렵고, 권한 설정하기도 쉽지 않다.

 

HTTP 프로토콜

읽기와 쓰기에 하나의 URL만 사용한다. 그리고 사용자에게 익숙한 사용자이름과 암호 방식의 인증을 사용한다. 사용자이름과 암호 방식의 인증이 SSH에 비해 사용하기 간단하다. SSH만큼이나 빠르고 효율적이기 까지 하다.

반면 단점은 인증키 관리가 SSH보다 살짝 복잡한것 외에는 없다. 

 

SSH 프로토콜

상대적으로 설정하기 쉽고, 데이터가 암호화되어 전송되기 때문에 보안에 비교적 안전하고, 효율적이다.

하지만 ssh는 익명으로 접근할 수 없기 때문에 읽기 전용 프로젝트라도 익명으로 시스템 접근이 불가능하다. 

 

서버에 사용자들이 접근할 수 있도록 하는 방법으로 서버마다 'git’이라는 계정을 하나씩 만드는 방법이 있다. 쓰기 권한이 필요한 사용자의 SSH 공개키를 모두 모아서 'git' 계정의 ~/.ssh/authorized_keys 파일에 모든 키를 입력한다. 그러면 모두 'git' 계정으로 그 서버에 접속할 수 있다. 이 'git' 계정은 커밋 데이터에는 아무런 영향을 끼치지 않는다. 

 

Git 프로토콜

잘 사용되지 않는 프로토콜로, Git에 포함된 데몬을 사용하는 것이다. 

Git 프로토콜은 전송 속도가 가장 빠르다고 할 수 있지만, 인증 메커니즘이 없다.

'git' 카테고리의 다른 글

git flow vs github flow  (0) 2024.01.27
[후기] Sapling 써보기  (0) 2023.11.05
graphite 사용기  (2) 2023.10.23
Git 내부 동작 방식 알아보기  (0) 2022.05.07