Gitoliteを使用してUbuntu12.04VPS上のGitサーバーへのアクセスを制御する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
Gitは、あらゆる種類のプロジェクトの変更とコードを追跡するために使用できる優れた分散バージョン管理システムです。 チームのプロジェクトを収容するようにgitサーバーを構成すると役立つ場合があります。
Gitolite は、gitサーバーのアクセス制御レイヤーを提供するため、オペレーティングシステムのユーザーアカウントを伴わずにユーザーベースのgitアクセスを構成できます。 これにより、サーバーを他の種類の相互作用にさらすことなく、gitコントリビューターに必要な特権が提供されます。
これらのコンポーネントをUbuntu12.04VPSにインストールします。 このチュートリアルでは、このVPSにsudo権限を持つ通常のユーザーアカウントがあることを前提としています。 Ubuntu でのユーザーアカウントの設定についてサポートが必要な場合は、このチュートリアルを使用してください。
Gitをインストールする
通常のユーザーアカウントでUbuntuサーバーにログインします。
Ubuntuのデフォルトリポジトリからgitをインストールします。
sudo apt-get install git-core
これでgitがインストールされました。 gitが正しく動作するようにいくつかの設定を行います。
Gitoliteをインストールします
gitが正しく設定されたので、gitoliteをインストールして、リポジトリへのユーザーアクセスを管理できます。
Gitoliteは、Ubuntuのデフォルトのリポジトリでも利用できます。 次のコマンドでインストールします。
sudo apt-get install gitolite
Gitoliteは、gitを介して構成を管理します。 これを適切に設定するために、gitoliteと対話することを唯一の機能とするオペレーティングシステムユーザーを作成します。
オペレーティングシステムのユーザーが呼び出されます git
共同編集者が覚えやすいようにするためです。 パスワードは、を使用してのみアクセスできるように設定することはありません。 su
指図。
sudo adduser --system --group --shell /bin/bash --disabled-password git
これで、gitolite構成を処理する「git」というユーザーができました。 通常のアカウントからこのユーザーにアクセスできる必要があります。 これを行うには、git管理に関連付けられたSSHキーを構成します。
Git管理用のSSHキーを構成する
gitとgitoliteの管理に使用するlocalコンピューターで、SSHキーペアをまだ作成していない場合は作成する必要があります。
注:すでにキーペアを作成している場合は、SSHキーが上書きされないように、このコマンドをスキップする必要があります。
ssh-keygen -t rsa
デフォルトの場所を受け入れて、を押します ENTER
パスワードなしでキーベースのログインを構成します。
次のように入力して、公開鍵をgitサーバーにコピーします。
scp〜/ .ssh / id_rsa.pub regular_username @ git_server_IP_address :/tmp/git-admin.pub
サーバーの初期設定の記事に従った場合は、gitユーザーにSSHアクセスを許可する必要があります。 これを行うには、 / etc / ssh / sshd_config
を編集し、AllowUsers
ディレクティブにgitを追加します。 完了したら、SSHサーバーを再起動します。
sudo service ssh restart
Gitoliteを構成する
次の手順は、gitサーバーで実行されます。 通常のユーザーで再度ログインします。
「git」ユーザーでログインして、転送したばかりの公開鍵でgitoliteを初期化できます。
sudo su - git
これで、次のコマンドを使用してgitoliteを設定できます。
gl-setup /tmp/git-admin.pub
打つ ENTER
構成をエディターにプルします。 コンテンツをスキャンして、デフォルトの構成がニーズを満たしていることを確認します。 後でいつでも変更できます。
終了したら、保存してファイルを終了します。
ジトライトの投与方法
ローカルコンピューターに戻って、gitoliteの管理を開始できます。
このコンピューターにgitがまだインストールされていない場合は、次のコマンドを使用してインストールする必要があります。
sudo apt-get install git-core
まず、gitサーバーからローカルマシンにgitolite情報を複製する必要があります。
git clone git @ git_server_IP_address :gitolite-admin
これにより、という新しいディレクトリが作成されます gitolite-admin
現在のディレクトリ内。 ここで、アクセスポリシーに変更を加えてから、それらの変更をgitサーバーにプッシュできます。
Gitoliteに新しいユーザーを追加する
プロジェクトにユーザーを追加するには、ユーザーの公開鍵が必要になります。 Gitoliteは、サインインするユーザー名を同じ名前の公開鍵に関連付けることで機能します。 と呼ばれるユーザーがいるふりをします john
このデモンストレーションのために。
ローカルマシンでは、に変更できます gitolite-admin
ディレクトリを作成し、中身を確認します。
cd gitolite-admin
ls
conf keydir
内部には、2つのディレクトリがあります。 conf
と keydir
. 当然のことながら、 keydir
ユーザーキーが含まれています。
「ジョン」と通信し、彼が使用する予定の公開鍵を取得します。 次に、そのキーを次のようにこのディレクトリにコピーします。
cp /path/to/john's/public/key.pub〜/gitolite-admin/keydir/john.pub
その後、新しい公開鍵をgitリポジトリに追加する必要があります。
まず、管理用gitアクションに関連付けられるユーザー名と電子メールを構成します。 これを構成するには、次のコマンドを入力します。
git config --global user.name 「 your_name_here 」gitconfig--globaluser.email「 your_email @住所 .com 」
おそらく、選択したエディターを使用するようにgitを構成することもできます。 次のコマンドを入力して、設定を指定します。
git config --global core.editor your_editor_choice
これで、新しいファイルをgitに追加できます。
git add keydir/john.pub
メッセージで変更をコミットします。
git commit-a-m「新しいユーザーJohnが追加しました」
変更をgitサーバーにプッシュして、結果を保存します。
git push
Gitoliteでアクセスを構成する
前のセクションでユーザーを追加したときに、次のような警告に気付いたかもしれません。
remote:
remote: ***** WARNING *****
remote: the following users (pubkey files in parens) do not appear in the config file:
remote: john(john.pub)
新しいユーザーが構成ファイルにないというメッセージが表示されます。 これは、ユーザー「john」がgitoliteに認識されているが、アクセスが作成されていないことを意味します。
編集することで、彼を構成に簡単に追加できます。 ~/gitolite-admin/conf/gitolite.conf
ファイル。
しかし、さらに一歩進んで、彼に独自のリポジトリを提供します。 と呼ばれるリポジトリを作成します johnsproject
そして彼にアクセスを与えます:
nano ~/gitolite-admin/conf/gitolite.conf
repo gitolite-admin
RW+ = git-admin
repo testing
RW+ = @all
ご覧のとおり、構文は非常に単純です。
gitリポジトリを指定します repo
キーワードの後にその名前が続きます。 その下に、特権タイプ、等号(=)、およびそのアクセス権を取得する必要のあるユーザーを記述します。
グループは、次のような行で定義できます。
@ group_name = user1 user2 user3
その後、グループを参照することで、次のような多くのユーザーを参照できます。
repo some_repo RW + = @ group_name
と呼ばれる特別なグループ @all
コンテキストに基づいて、すべてのユーザーまたはすべてのリポジトリを参照します。
権限は、次のいずれかの値になります。
- R :読み取り専用アクセス
- RW :新しい変更を読み取ったりプッシュしたりできます。 gitサーバーにすでに存在する参照を削除することはできません。
- RW + :破壊的にプッシュしたり、サーバー上の参照を削除したりできます。
- –:指定されたコンテンツにアクセスできません。
「john」に、という新しいリポジトリへのフルアクセスを与えることができます johnsproject
次の行をファイルの最後に追加します。
repo johnsproject
RW+ = john
ファイルを保存して閉じます。
これで、新しいメッセージでこの変更をコミットできます。
git commit-a-m「 MadeJohnのリポジトリ」
最後に、変更をgitサーバーにプッシュします。
git push
これで、「john」は、公開鍵と秘密鍵を作成したコンピューターから、次のコマンドを使用してプロジェクトリポジトリのクローンを作成できるようになります。
git clone git @ git_server_IP_address :johnsproject
結論
これで、gitoliteが正しく構成されているはずです。 付随するオペレーティングシステムのユーザーと権限を毎回構成することを心配することなく、gitユーザーを簡単に作成できるはずです。
多様なチームで複数のプロジェクトを管理している場合は、プロジェクトに対応するグループを設定するのがおそらく最善です。 整理することも役立つかもしれません keydir
プロジェクトに基づいてサブディレクトリにキーを設定します。 Gitoliteはそれらを同じように使用しますが、管理目的で見つけるのが簡単になります。