少人数利用のgit サーバを建てる方法

サーバ管理者と開発者がいる状態で、開発者にはgit以外のサーバ上コンテンツにはアクセスさせない環境を構築する。WEBアクセスなどは必要なくssh接続のみで小規模な開発環境を作成する場合に最適なパターン。
GitHubを使っても良いけど古いサーバマシンやVPSの余力がある場合に最適。

制限されたgit用のユーザを作成する

git-shellの確認

git-shell というgit操作のみに特化したshellが存在する。(通常はサーバにgitをインストールし時に一緒にインストールされる)

which git-shell

で存在を確認する。

sudo vi /etc/shells

の内容を確認して、git-shell があることを確認。ない場合は、このファイルにパスを追加する。(例: /usr/bin/git-shell )

ユーザ 「git」 の作成

gituser を追加して、git-shell がログインshellとなるように設定する。

sudo useradd -m -s /usr/bin/git-shell git

ローカルPCで、ssh用鍵の生成(対話式で必要な情報の入力)

ssh-keygen -t rsa -b 4096 -C "git"

サーバにパブリックキーのセット

$ sudo mkdir /home/git/.ssh
$ sudo chown git:git /home/git/.ssh
$ sudo chmod 700 /home/git/.ssh
$ sudo cp どこかのパス/git.pub /home/git/.ssh/authorized_keys
$ sudo chown git:git /home/git/.ssh/authorized_keys
sudo chmod 600 /home/git/.ssh/authorized_keys

複数のユーザでgitの更新ができるようにグループの作成とリポジトリディレクトリへのグループ権限の付与を行う。

$ sudo groupadd gitgrp
$ sudo usermod -aG gitgrp xxx
$ sudo usermod -aG gitgrp git

$ sudo chgrp -R gitgrp /opt/git/
$ sudo chmod -R g+rw /opt/git/
$ sudo chmod g+s /opt/git/

$ ls -al /opt
drwxr-xr-x 16 root root   4096  3月 17 14:34 .
drwxr-xr-x 19 root root   4096  3月  9 00:43 ..
drwxrwsr-x  2 root gitgrp  4096  3月 17 14:34 git

$ mkdir /opt/git/repo

git ベアリポジトリの作成

まずは、サーバで、ディレクトリを作成し、git init –bare を行う。

git に登録するデータの登録

構成管理のディレクトリで git init を実行。
.gitignore を編集して、必要な対象を設定。
git add . で対象ファイルを登録。
git commit -m “First commit” でコミット。

git リモートの登録

git remote add origin <リポジトリURL>

同一のサーバ内の場合は、パス名でOK

あとは、git に必要なファイルをコミットして、push する。

git push -u origin master

-u は、以降pushのみでOKになるためにつけておく

各人のローカル git

git clone <ホスト名>:/var/git/<git ディレクトリ>  <ローカルパス>
<~/.ssh/config>

Host <ホスト名>
    HostName <接続先ホスト>  xxx.com など
    User <ユーザー名>
    Port <ポート番号>  SSHのポート 通常は22
    IdentityFile <秘密鍵のパス>

端末からgit clone すると、以下のエラーがでることがある。
所有者がユーザと異なる場合に発生する。
サーバーの該当ユーザ(この場合)git で、以下を登録する必要がある。(端末側で設定しても意味がない)
git config –global –add safe.directory /var/git/xxxxxx

fatal: detected dubious ownership in repository at '/var/git/xxxxxxx'
To add an exception for this directory, call:

git config –global –add safe.directory /var/git/xxxxxx
fatal: Could not read from remote repository.

この操作には、ログインshellを切替える必要がある。
chsh -s /bin/sh

最後は、git-shell に戻すことを忘れずに!

git のリモート設定の確認方法

git remote -v

コメント

タイトルとURLをコピーしました