Git 프로토콜 v2 구성하기

Tier: Free, Premium, Ultimate Offering: Self-Managed

Git 프로토콜 v2는 여러 방면에서 v1 와이어 프로토콜을 개선하며, HTTP 요청을 위해 GitLab에서 기본적으로 활성화되어 있습니다. SSH를 활성화하려면 추가 구성이 관리자에 의해 필요합니다.

새로운 기능 및 개선 사항에 대한 자세한 내용은 Google 오픈 소스 블로그프로토콜 문서에서 확인할 수 있습니다.

사전 요구 사항

클라이언트 측에서는 git v2.18.0 이상이 설치되어 있어야 합니다.

서버 측에서는 SSH를 구성하려면 sshd 서버가 GIT_PROTOCOL 환경을 수락하도록 설정해야 합니다.

GitLab Helm 차트올인원 도커 이미지를 사용하는 설치에서는 SSH 서비스가 이미 GIT_PROTOCOL 환경을 수락하도록 구성되어 있습니다. 사용자는 더 이상 어떤 작업도 수행할 필요가 없습니다.

Linux 패키지 또는 자체 컴파일된 설치에서는 서버의 SSH 구성을 수동으로 업데이트하여 /etc/ssh/sshd_config 파일에 다음 줄을 추가하여 SSH 구성을 업데이트해야 합니다.

AcceptEnv GIT_PROTOCOL

SSH 데몬을 구성한 후 변경 사항이 적용되도록 재시작하세요.

# CentOS 6 / RHEL 6
sudo service sshd restart

# 기타 모든 지원되는 배포판
sudo systemctl restart ssh

지침

새 프로토콜을 사용하려면 클라이언트는 Git 명령에 구성 -c protocol.version=2을 전달하거나 전역으로 설정해야 합니다.

HTTP 연결

클라이언트에서 Git v2가 사용되는지 확인합니다.

GIT_TRACE_CURL=1 git -c protocol.version=2 ls-remote https://your-gitlab-instance.com/group/repo.git 2>&1 | grep Git-Protocol

Git-Protocol 헤더가 전송됨을 확인해야 합니다.

16:29:44.577888 http.c:657              => Send header: Git-Protocol: version=2

서버에서 Git v2가 사용되는지 확인합니다.

GIT_TRACE_PACKET=1 git -c protocol.version=2 ls-remote https://your-gitlab-instance.com/group/repo.git 2>&1 | head

Git 프로토콜 v2를 사용하는 예시 응답:

$ GIT_TRACE_PACKET=1 git -c protocol.version=2 ls-remote https://your-gitlab-instance.com/group/repo.git 2>&1 | head
10:42:50.574485 pkt-line.c:80           packet:          git< # service=git-upload-pack
10:42:50.574653 pkt-line.c:80           packet:          git< 0000
10:42:50.574673 pkt-line.c:80           packet:          git< version 2
10:42:50.574679 pkt-line.c:80           packet:          git< agent=git/2.18.1
10:42:50.574684 pkt-line.c:80           packet:          git< ls-refs
10:42:50.574688 pkt-line.c:80           packet:          git< fetch=shallow
10:42:50.574693 pkt-line.c:80           packet:          git< server-option
10:42:50.574697 pkt-line.c:80           packet:          git< 0000
10:42:50.574817 pkt-line.c:80           packet:          git< version 2
10:42:50.575308 pkt-line.c:80           packet:          git< agent=git/2.18.1

SSH 연결

클라이언트에서 Git v2가 사용되는지 확인합니다.

GIT_SSH_COMMAND="ssh -v" git -c protocol.version=2 ls-remote ssh://git@your-gitlab-instance.com/group/repo.git 2>&1 | grep GIT_PROTOCOL

GIT_PROTOCOL 환경 변수가 전송됨을 확인해야 합니다.

서버 측에서는 HTTP에서 사용한 같은 예시를 사용하여 URL을 SSH용으로 변경하여 사용합니다.

연결의 Git 프로토콜 버전 관찰

생산 환경에서 사용되는 Git 프로토콜 버전을 관찰하는 방법에 대한 정보는 관련 문서를 참조하세요.