Git 서버 프로토콜 소개
- Git 서버를 운영하기 위해 다양한 프로토콜을 사용할 수 있습니다.
- Local 프로토콜, HTTP/HTTPS 프로토콜, SSH 프로토콜, Git 프로토콜이 있습니다.
Git 호스팅 서비스
- 서버를 직접 설치하고 운영하기 어려운 경우 Git 호스팅 서비스를 활용할 수 있습니다.
- GitHub, GitLab, Bitbucket 등은 Git 호스팅 서비스의 대표적인 예시입니다.
Bare 저장소
- 리모트 저장소는 보통 워킹 디렉토리가 없는 Bare 저장소로 설정됩니다.
- Bare 저장소는 단순히 Git 데이터만 가지며, 체크아웃이 필요하지 않습니다.
로컬 프로토콜
- 같은 시스템의 다른 디렉토리에 있는 리모트 저장소를 다룰 때 사용되는 Git의 기본 프로토콜 중 하나입니다.
-
$ git clone D:\TEST\gittest gittest2 # gittest 폴더에 있는 내용을 gittest2 폴더로 clone했습니다.
- clone한 디렉토리에서 리모트를 설정할 수 있습니다.
-
$ git remote add test D:\TEST\gittest2 # gittest2 폴더에 test 리모트가 추가되었습니다.
- 장점
- 파일 기반 저장소의 장점은 설정이 간단하다는 것입니다. 기존의 파일시스템 권한을 그대로 활용할 수 있어 설정이 용이합니다.
- 이미 팀이 공유 가능한 파일시스템을 가지고 있다면 저장소를 쉽게 구성할 수 있습니다. 읽기 및 쓰기 권한을 가진 공유 디렉토리에 Bare 저장소를 만들면 됩니다.
- 동료가 작업한 내용을 빠르게 가져와 확인할 수 있습니다. 특히 동료가 작업한 내용을 확인해 줘야 할 때, 간단한 명령으로 코드를 가져올 수 있습니다.
- 단점
- 다양한 상황에서 디렉토리를 공유하는 것이 어려울 수 있습니다. 특히 집에서 작업 후 Push해야 하는 경우 리모트 저장소가 있는 디스크를 마운트하는 작업은 다른 프로토콜보다 느리고 어려울 수 있습니다.
- 파일시스템을 마운트하는 경우 빠른 접근 속도를 기대하기 어렵습니다. 로컬 저장소는 데이터를 빠르게 읽을 수 있는 경우에만 빠른 속도를 보여줍니다.
- 로컬 프로토콜은 저장소에 우발적인 변경이나 침범으로부터 보호되지 않습니다. 모든 사용자는 해당 디렉토리에서 자유롭게 작업할 수 있으며, Git 내부 파일이나 데이터를 삭제하거나 변경할 수 있습니다.
HTTP 프로토콜
- 스마트 HTTP
- 장점
- 사용자이름과 암호만으로 인증하기 때문에 SSH와 비교해 사용이 간단합니다.
- HTTPS를 이용하여 데이터 전송을 암호화할 수 있습니다.
- 보편적인 프로토콜입니다.
- 단점
- HTTPS 설정이 SSH 설정보다 까다로울 수 있습니다.
- 장점
- 멍청한 HTTP
- Git 서버가 스마트 HTTP 요청에 응답하지 않을 때 Git 클라이언트가 시도하는 차선책입니다.
- 원격 저장소를 파일로 간주하며, HTTP 서버가 저장소를 그냥 파일로 제공합니다.
- 기본적으로 설정이 간단하며, Bare 저장소를 HTTP 문서 루트에 두고 post-update 훅을 설정합니다.
SSH 프로토콜
- SSH 프로토콜을 사용하여 협업하는 방법은 간단하면서도 안전하고 효율적입니다. SSH를 이용하면 외부 도구 없이 Git 서버를 구축할 수 있습니다.
-
$ git clone ssh://[user@]server/project.git # 또는 SCP 형태의 구문을 사용하여 줄여 쓸 수도 있습니다 $ git clone [user@]server:project.git
- 장점
- SSH는 대부분의 서버에서 기본적으로 지원하며, 설정이 비교적 간단합니다.
- SSH를 통한 데이터 전송은 암호화되어 인증된 상태로 이루어지므로 보안에 높은 수준을 제공합니다.
- SSH는 데이터를 가능한 압축하여 전송하기 때문에 효율적인 데이터 전송이 가능합니다.
- 단점
- SSH는 익명으로 접근할 수 없습니다. 따라서 오픈소스 프로젝트 등에서는 부적합할 수 있습니다.
- 프로젝트에 따라서는 익명으로 접근이 필요한 상황이 발생할 수 있어, 공용 리모트 서버 설정이 어려울 수 있습니다
Git 프로토콜
- Git에 내장된 데몬을 사용하는 프로토콜로, 포트 번호 9418을 사용합니다.
- 이 프로토콜은 SSH 프로토콜과 비슷한 서비스를 제공하지만, 인증 메커니즘이 없습니다.
- 저장소에 `git-export-daemon-ok` 파일을 만들면 Git 프로토콜로 서비스할 수 있지만, 이는 보안성이 없는 방식입니다.
-
$ git clone git://server/project.git
- 장점
- Git 프로토콜은 전송 속도가 빠르다는 특징이 있습니다. 특히 전송량이 많은 공개 프로젝트나 읽기만 필요한 프로젝트를 서비스할 때 유용합니다.
- 인증 메커니즘이 없어 누구나 Clone할 수 있거나, 전송량이 적은 프로젝트를 읽을 수 있게 합니다.
- 단점
- 보안상의 이유로 Git 프로토콜만으로는 인증 메커니즘이 없어서, 일반적으로 SSH나 HTTPS 프로토콜과 함께 사용됩니다.
- Git 프로토콜은 별도의 데몬이 필요하며 프로젝트에 맞게 설정해야 합니다. 설치 및 설정이 다소 복잡할 수 있습니다.
- 표준 포트가 아니기 때문에 방화벽에 막혀 있을 수 있습니다.
'GIT > Git 서버' 카테고리의 다른 글
[GIT] 스마트 HTTP (0) | 2024.02.16 |
---|---|
[GIT] Git 데몬 (0) | 2024.02.14 |
[GIT] 서버 설정하기 (0) | 2024.02.14 |
[GIT] SSH 공개키 만들기 (0) | 2024.02.13 |
[GIT] 서버에 Git 설치하기 (0) | 2024.02.13 |