Git 프로토콜 v2 구성
Offering: GitLab Self-Managed
Git 프로토콜 v2는 v1 wire 프로토콜을 여러 면에서 개선하며 GitLab에서 HTTP 요청에 대해 기본적으로 활성화됩니다. 새 기능 및 개선 사항에 대한 자세한 내용은 Google Open Source Blog를 참조하세요.
Git 프로토콜 v2는 v1 wire 프로토콜을 여러 면에서 개선하며 GitLab에서 HTTP 요청에 대해 기본적으로 활성화됩니다. SSH를 활성화하려면 관리자가 추가 구성을 해야 합니다.
새 기능 및 개선 사항에 대한 자세한 내용은 Google Open Source Blog를 참조하세요.
사전 요구 사항#
클라이언트 측에서 git v2.18.0 이상이 설치되어 있어야 합니다.
서버 측에서 SSH를 구성하려면 sshd 서버가 GIT_PROTOCOL 환경을 수락하도록 설정해야 합니다.
GitLab Helm 차트 및 All-in-one Docker 이미지를 사용하는 설치에서는 SSH 서비스가 이미 GIT_PROTOCOL 환경을 수락하도록 구성되어 있습니다. 사용자는 추가 작업이 필요하지 않습니다.
Linux 패키지 또는 자체 컴파일 설치의 경우 /etc/ssh/sshd_config 파일에 다음 줄을 추가하여 서버의 SSH 구성을 수동으로 업데이트합니다:
AcceptEnv GIT_PROTOCOL
SSH 데몬을 구성한 후 변경 사항이 적용되도록 재시작합니다:
# CentOS 6 / RHEL 6
sudo service sshd restart
# All other supported distributions
sudo systemctl restart ssh
지침#
새 프로토콜을 사용하려면 클라이언트가 Git 명령에 -c protocol.version=2 구성을 전달하거나 전역으로 설정해야 합니다:
git config --global 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 환경 변수가 전송되는 것을 확인해야 합니다:
debug1: Sending env GIT_PROTOCOL = version=2
서버 측에서는 URL을 SSH를 사용하도록 변경하여 HTTP와 동일한 예시를 사용할 수 있습니다.
연결의 Git 프로토콜 버전 관찰#
프로덕션 환경에서 사용 중인 Git 프로토콜 버전을 관찰하는 방법에 대한 정보는 관련 문서를 참조하세요.
