Gitプロトコルv2の構成
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
Gitプロトコルv2は、v1ワイヤプロトコルをいくつかの点で改善し、HTTPリクエストに対してGitLabでデフォルトで有効になっています。SSHを有効にするには、管理者による追加の設定が必要です。
新機能と改善点の詳細については、GoogleオープンソースBlogをご覧ください。
前提要件
クライアント側からは、git v2.18.0以降がインストールされている必要があります。
サーバー側からは、SSHを設定するには、sshdサーバーがGIT_PROTOCOL環境変数を受け入れるように設定する必要があります。
GitLab Helm ChartsおよびAll-in-one Dockerイメージを使用するインストールでは、SSHサービスはすでにGIT_PROTOCOL環境変数を受け入れるように設定されています。ユーザーはこれ以上何をする必要もありません。
Linuxパッケージからのインストール、またはセルフコンパイルインストールの場合は、次の行を/etc/ssh/sshd_configファイルに追加して、サーバーのSSH設定を手動で更新します:
AcceptEnv GIT_PROTOCOLSSHデーモンを設定したら、変更を有効にするために再起動します:
# CentOS 6 / RHEL 6
sudo service sshd restart
# All other supported distributions
sudo systemctl restart ssh手順
新しいプロトコルを使用するには、クライアントは-c protocol.version=2設定をGitコマンドに渡すか、グローバルに設定する必要があります:
git config --global protocol.version 2HTTP connections
クライアントが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-ProtocolGit-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 | headGitプロトコル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.1SSH Connections
クライアントが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_PROTOCOLGIT_PROTOCOL環境変数が送信されていることを確認してください:
debug1: Sending env GIT_PROTOCOL = version=2サーバー側では、HTTPからの同じ例を使用して、URLをSSHを使用するように変更できます。
接続のGitプロトコルv2バージョンを監視します
本番環境で使用されているGitプロトコルバージョンを監視する方法については、関連ドキュメントを参照してください。