【git】ローカルにgitリポジトリーを構築してDNSで外部から接続するその2 gitリポジトリー構築

概要

Fedoraで用意したgitリポジトリー用のサーバーにgit用のユーザーやリポジトリーを作成する。ある程度ユーザー権限はgitコマンドのみにするなどの方法で運用してみる。

※正しいのかわからないがroot権限があるユーザーかrootユーザーで作業している。

gitリポジトリー用のディレクトリー作成

好きな場所にディレクトリーを作成すればいいが今回は「/var/git/repos」にリポジトリーを置いていく想定

mkdri /var/git/repos

gitユーザーの作成 ssh公開鍵の登録

「gituser01」という名前で作成する「/usr/bin/git-shell」はgitに関する作業しかできないような制限付きのシェルのことでこのユーザーは通常のssh接続でPCにログインすることはできないようになっている。

useradd -s /usr/bin/git-shell gituser01

SSH公開鍵の登録用のファイルを作成、ディレクトリーとファイル名はこの名前にしておく必要がある。

mkdir /home/gituser01/.ssh 
touch /home/gituser01/.ssh/authorized_keys

root権限のユーザーでファイルを作成したのでファイルの権限を「gituser01」にしておく

chown -R gituser01:gituser01/home/gituser01/.ssh 
chmod 700 /home/gituser01/.ssh 
chmod 600 /home/gituser01/.ssh/authorized_keys 

authorized_keysの中身はrsaの公開鍵(pubキー)を登録しておく,ここではsshキーの生成方法は省く

vi /home/gituser01/.ssh/authorized_keys

ssh-rsa
...
gituser01@example.com

グループを作成してユーザーを追加する

gitリポジトリーにユーザーを毎回登録するのもよかったが毎回gitリポジトリーのユーザーについてするのが面倒だと思ったのでgitリポジトリーを操作するグループを作成してそこにgitユーザーを登録する。

リポジトリーなどの権限はこのグループで登録しておけば、グループにユーザーを追加するだけでgitリポジトリーに接続できる(はず)

今回は「gitgroup」というグループにする

// 「gitgroup」というグループを作成
groupadd gitgroup
// 先ほど作成した「gituser01」を追加
usermod -G gitgroup gituser01

// もしグループにユーザーが登録されているか確認したい場合
getent group gitgroup
gitgroup:x:1001:gituser01

Gitリポジトリの作成

リポジトリー名は「repo01」という名前で作成して権限を作成したグループ名「gitgroup」にする。

// /var/git/repos内に移動
cd /var/git/repos

mkdir repo01.git

// 権限変更
sudo chgrp -R gitgroup repo01.git

// 権限が変更されているかの確認
ls -al
---
drwxrwsr-x. 7 root gitgroup 119 Aug 20 16:15 repo01.git

リポジトリーのディレクトリーを作成したら初期化コマンドを行ってもいいがgitのmaster slaveなどの呼び方が良くないらしくhintが表示されることがあるのでデフォルトブランチをmainにしておく。

// リポジトリーの作業のために移動
cd repo01.git/

// デフォルトブランチをmain
git config --system init.defaultBranch main

// gitリポジトリーの初期化
sudo git init --bare --shared

これでリポジトリーサーバは完了

おわりに

リポジトリーを用意出来たらローカルIPアドレスでgitのクローンなどは可能なはず。

クライアントでの最初の行動はgithubを参考にみたいにしておく

// testフォルダーにクローンして初回のコミットをしていみる
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
// ここはクライアントPCでssh接続できるようにしておく必要がある
git remote add origin gituser01@ローカルIPアドレス:/var/git/repos/repo01.git
git push -u origin main

別のgitユーザーを追加したい場合はユーザー作成とグループの登録を行うだけ。

rootで作業する ユーザー名は「gitf」

// git用のユーザー作成
useradd -s /usr/bin/git-shell gitf

// もろもろssh接続するための処理
mkdir /home/gitf/.ssh
touch /home/gitf/.ssh/authorized_keys
chown -R gitf:gitf /home/gitf/.ssh
chmod 700 /home/gitf/.ssh
chmod 600 /home/gitf/.ssh/authorized_keys

// グループ追加
usermod -G gitgroup gitf

コメント