GitHubにソースを置きたくないので(一応、4月から無料でもprivateにできるが)、自前のサーバーにGitを立てることにした。Gitの公式ドキュメントは以下。
とりあえず、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にて
$ 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を入力する。