CentOSサーバーにGit

GitHubにソースを置きたくないので(一応、4月から無料でもprivateにできるが)、自前のサーバーにGitを立てることにした。Gitの公式ドキュメントは以下。

Gitドキュメント(日本語)

とりあえず、Gitサーバー立てるのは、以下を参考に。

4.4 Gitサーバー – サーバーのセットアップ

0)方針

  • 個人の開発端末のVisual Studio 2019のローカルレポジトリーのバックアップ用。
  • 端末は複数(自宅、外)あるので、共有とする。
  • 公開サーバー上に置くので、アクセスはポート変更済みのSSHで鍵認証。
  • ユーザーはgit操作しかできないユーザーとする。

1)Gitインストール

$ yum install git

2)Gitユーザー作成

git用のユーザーを作成する。この時、ログインシェルをgitに制限したものgit-shellを指定。

$ adduser --shell=/usr/bin/git-shell git

3)SSH公開鍵の登録

クライアント側の公開鍵を登録するために、gitユーザーにsuする。

$ su -s /bin/bash - git

クライアント側(開発PC端末)のSSH公開鍵(/tmp/id_rsa.john.pub)を登録する。※公開鍵が未作成の場合は、以下手順(5-1)で作成した公開鍵を登録。

$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
 ※viで編集するでもOK

4)プロジェクトの初期化

空の共有のhogeプロジェクトを作成。

$ cd
$ mkdir hoge.git
$ cd hoge.git
$ git init --bare --shared
 ※gitユーザーでしか使わないのが、後の為、一応、shared

5)Windows側のSSH設定

Windows PowerShellを起動して、SSHの設定を行う。ちなみに、Visual Studio 2019のGitで使うSSHコマンドは以下に入っている

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\usr\bin

5-1)SSH公開鍵の作成

ssh-keygenコマンドで、鍵を作成する。鍵を作成したら、公開鍵(端末側の、~/.ssh/id_rsa.pub)を、サーバー側の~/.ssh/authoraized_keysに追加登録する。※上記手順3にて

4.3 Gitサーバー – SSH 公開鍵の作成

$ ssh-keygen

5-2)既知ホストの追加&接続確認

Gitサーバー(xxx.gijutsu.comで、SSHポートが9999の場合)に接続して、クライアント側の既知ホストに登録する。

$ ssh -p 9999 -l git xxx.gijutsu.com

この時、既知ホストに追加するか聞いてくるので、yesを入力。その後は、以下のシェルエラーとなればOK。

Last login: Tue Dec 1 10:13:25 2020
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to xxx.gijutsu.com closed.

6)Visual StudioからのPush

作成したGitサーバーのhogeプロジェクトにプッシュする場合は、リモートURLは以下を指定。

ssh://git@xxx.gijutsu.com:9999/~/hoge.git

Visual Studio 2019では、「Git 」から「Gitレポジトリの作成」で、「既存のリモート」を選択して、上記のリモートURLを入力する。

Visual Studio 2019 - Gitレポジトリの作成