開発者ドキュメント

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つのディレクトリがあります。 confkeydir. 当然のことながら、 keydir ユーザーキーが含まれています。

「ジョン」と通信し、彼が使用する予定の公開鍵を取得します。 次に、そのキーを次のようにこのディレクトリにコピーします。

cp /path/to/john's/public/key.pub〜/gitolite-admin/keydir/john.pub

その後、新しい公開鍵をgitリポジトリに追加する必要があります。

まず、管理用gitアクションに関連付けられるユーザー名と電子メールを構成します。 これを構成するには、次のコマンドを入力します。

 git config --global  user.nameyour_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 コンテキストに基づいて、すべてのユーザーまたはすべてのリポジトリを参照します。

権限は、次のいずれかの値になります。

「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はそれらを同じように使用しますが、管理目的で見つけるのが簡単になります。

ジャスティン・エリングウッド
モバイルバージョンを終了