gitのリポジトリを立てる(SSH経由)

そういえば、githubに頼りっぱなしで、共有リポジトリを作ってどうのこうのというのは試してなかったなと思いこんな感じでやってみた。

$ sudo useradd -d /home/git -s /bin/rbash -c "" -m -k '' git
$ cd /home/git/
$ sudo cat > .bash_profile
export PATH=/home/git/bin
^C

$ sudo mkdir bin
$ sudo ln -s /usr/bin/git /home/git/bin

して、gitコマンドしか使えない制限のかかったgitユーザーを作る

レポジトリを作るときは、

$ cd /home/git
$ sudo -u git mkdir repos
$ sudo -u git mkdir repos/project.git
$ cd repos/project.git
$ sudo -u git git init --bare

でOK。

書き込めるユーザーは、/home/git/.ssh/authorized_keysに公開鍵を登録することで増やす。sshdの設定はもちろんパスワード認証不可にして公開鍵認証だけ許可にしておくこと。

これで、チェックアウトするときは、

$ git clone git@git.repos:repos/project.git

といった感じにおこなえる。

この方式だと、プロジェクトごとに認証を調整できないことや、rbashを使ってるのでgitとbash組み込みコマンドを使うことを許した状態でログインできてしまうなどの欠点はあるかも。

まだ運用してないので、しばらく使いながら様子をみてみようかと思う。