Gitoliteを使用してUbuntu12.04VPS上のGitサーバーへのアクセスを制御する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他の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
内部には、conf
とkeydir
の2つのディレクトリがあります。 当然のことながら、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
ご覧のとおり、構文は非常に単純です。
repo
キーワードの後に名前を付けてgitリポジトリを指定します。 その下に、特権タイプ、等号(=)、およびそのアクセス権を取得する必要があるユーザーを記述します。
グループは、次のような行で定義できます。
@ 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はそれらを同じように使用しますが、管理目的で見つけるのが簡単になります。