다음 참조: (Git 공식 서버 프로토콜 문서)
Git 는 로컬 프로토콜, HTTP 프로토콜, SSH (보안 셸) 프로토콜 및 Git 프로토콜의 네 가지 주요 프로토콜을 사용하여 데이터를 전송할 수 있습니다.
HTTP 프로토콜 (지능형 HTTP 프로토콜)
Git 1.6.6 은 보다 지능적인 새로운 HTTP 프로토콜 버전을 도입하여 Git 가 SSH 를 통해 데이터를 지능적으로 협상하고 전송할 수 있도록 합니다. 새로운 HTTP 프로토콜은 일반적으로 "스마트" HTTP 프로토콜이라고 하며, 이전 버전은 일반적으로 "벙어리" HTTP 프로토콜이라고 합니다.
스마트 HTTP 프로토콜은 표준 HTTP/S 포트에서 실행된다는 점을 제외하고 SSH 및 Git 프로토콜과 유사하게 작동합니다. 다양한 HTTP 인증 메커니즘을 사용할 수 있습니다. 즉, HTTP 프로토콜의 사용자 이름/암호에 대한 기본 권한 부여 및 SSH 공개 키 설정 요구와 같은 SSH 프로토콜보다 훨씬 간단합니다.
지능형 HTTP 프로토콜은 Git 에서 가장 널리 사용되는 방법일 수 있으며, git:// 프로토콜처럼 익명 서비스를 설정하고 SSH 프로토콜처럼 전송 중 인증 및 암호화를 제공합니다. 또한 하나의 URL 만 있으면 되므로 요구 사항에 따라 다른 URL 을 설정할 필요가 없습니다. 라이센스가 필요한 서버 (일반적으로 필요) 에 푸시하는 경우 서버는 사용자 이름과 암호를 입력하라는 메시지를 표시합니다. 서버에서 데이터를 가져올 때도 마찬가지입니다.
사실, GitHub 와 같은 서비스의 경우 웹 페이지에서 볼 수 있는 URL (예: Github) 은 복제 푸시와 동일합니다 (권한이 있는 경우).
우세
서로 다른 액세스 방법에는 하나의 URL 만 필요합니다. 서버는 인증이 필요할 때만 권한 정보를 입력하라는 메시지를 표시하므로 최종 사용자가 Git 를 쉽게 사용할 수 있습니다. 사용자 이름/비밀번호 권한 부여를 사용하는 것은 SSH 프로토콜에 비해 큰 이점으로, 사용자가 Git 를 사용하기 전에 로컬로 SSH 키 쌍을 생성한 다음 공개 키를 서버에 업로드할 필요가 없습니다. HTTP 프로토콜의 가용성은 경험이 없거나 시스템에 SSH 관련 프로그램이 없는 사용자에게 주요 이점입니다. SSH 프로토콜과 마찬가지로 HTTP 프로토콜도 매우 빠르고 효율적입니다.
또 다른 이점은 HTTP/S 프로토콜이 널리 사용되고 있으며 일반 엔터프라이즈 방화벽에서 이러한 포트의 데이터를 통과할 수 있다는 것입니다.
열세
일부 서버에서는 HTTP/S 프로토콜의 서버측 설정이 SSH 프로토콜보다 더 어렵습니다. 또한 "스마트" HTTP 프로토콜에 비해 다른 프로토콜을 사용하여 Git 서비스를 제공하는 것은 거의 이점이 없습니다.
HTTP 에서 권한 푸시를 사용하는 경우 SSH 키 인증을 사용하는 것보다 인증서를 관리하는 것이 더 번거로울 수 있습니다. 그러나 OSX 의 키 체인 또는 Windows 의 자격 증명 관리자와 같은 자격 증명 스토리지 도구를 사용하도록 선택할 수 있습니다. HTTP 비밀번호를 안전하게 저장하는 방법에 대한 자세한 내용은 자격 증명 라이브러리를 참조하십시오.
SSH 프로토콜
Git 서버를 설정할 때 SSH 프로토콜은 종종 전송 프로토콜로 사용됩니다. 대부분의 환경에서 SSH 를 통한 액세스가 이미 지원되기 때문에 지원되지 않더라도 설치가 비교적 쉽습니다. SSH 프로토콜은 또한 인증 권한을 확인하는 네트워크 프로토콜입니다. 또한 공통성 때문에 쉽게 설치하고 사용할 수 있습니다.
우세
SSH 프로토콜을 사용하면 많은 장점이 있습니다. 첫째, SSH 구현은 비교적 간단합니다. SSH 데몬은 매우 일반적이며 대부분의 관리자는 사용 경험이 있으며 대부분의 운영 체제에는 관련 관리 도구가 포함되어 있습니다. 둘째, SSH 를 통한 액세스는 안전합니다. 전송되는 모든 데이터는 인증되고 암호화되어야 합니다. 마지막으로 HTTP/S 프로토콜, Git 프로토콜, 로컬 프로토콜과 마찬가지로 SSH 프로토콜은 매우 효율적이며 전송 전에 데이터를 최대한 압축합니다.
열세
SSH 프로토콜의 단점은 익명으로 액세스할 수 없다는 것입니다. 데이터를 읽기만 해도 사용자는 SSH 를 통해 호스트에 액세스해야 하므로 SSH 프로토콜이 오픈 소스 프로젝트에 불리하게 됩니다. 회사 네트워크에서만 사용하는 경우 SSH 프로토콜만 사용해야 할 수 있습니다. 익명 읽기 전용 액세스와 SSH 프로토콜을 모두 제공하려면 SSH 서비스와 다른 사람이 액세스할 수 있는 서비스를 설정해야 합니다.