ウェブサイト検索

LinuxでプライベートGitサーバーを設定する方法


Gitは、世界中の開発者によって使用されるオープンソースのバージョン管理システムです。ここでは、プロジェクトをホストするための独自のGit Linuxサーバーを作成する方法を説明します。

Gitサーバーは、プロジェクトのリポジトリをホストしており、そこにはソースコードやその他の重要なファイルが含まれています。ほとんどの場合、GitHubのような一般的に知られているGitホスティングサービスを利用することができますが、場合によっては、プライバシー、カスタマイズ性、およびセキュリティを強化するために、自分専用のGitサーバーをホストする方が良いこともあります。

Linux上にプライベートGitサーバーを設定する方法を学びましょう。

Gitサーバーを設定するための前提条件

プライベートGitサーバーのセットアップを始める前に、予備のマシンにアクセスできるか、クラウドプロバイダーにサブスクリプションを申し込んでいる必要があります。これは重要で、予備のマシンをGitサーバーとして設定し、ローカルマシンから接続してGit操作を行うためです。

明確に定義されたシステム要件はありませんが、Gitサーバーが機能するためには1ギガバイトのRAMで十分なはずです。さらに、マシン上でLinuxディストリビューションが動作していることを確認してください。

ステップ 1: Linux サーバーに Git をダウンロードしてインストールします

言うまでもなく、事前にあなたのLinuxサーバーにGitがインストールされている必要があります。ターミナルを開き、Linuxディストリビューションのパッケージマネージャーを使ってGitをインストールしてください:

Debian/Ubuntu派生版では:

sudo apt install git

Arch系ディストリビューションについて:

sudo pacman -S git

CentOS/RHEL/Fedoraで:

sudo dnf install git

Gitがシステムにインストールされたら、次のステップに進んで、LinuxシステムをGitサーバーとしてGitリポジトリをホストするように設定してください。

ステップ2: Gitユーザーアカウントを設定する

SSH、RDP、または他のリモートアクセスプロトコルを使用して、Linuxサーバーに接続します。または、もし予備のコンピュータをサーバーとして使用している場合は、それを起動し、リポジトリを管理するための新しいユーザーアカウントを作成します。

ssh username@address
sudo useradd git

新しいユーザーが追加された後、su コマンドを使用してそのユーザーに切り替えます:

su git

専用のgitユーザーアカウントを作成することは、安全プロトコルであり、クライアントがあなたのGitサーバーに接続する際に、機械上のリソースへの視認性とアクセスを制限できることを保証します。これにより、複数のチームメンバーがあなたのサーバーにアクセスするグループプロジェクトで、安全に協力することができます。

ステップ3: .sshディレクトリを作成し、認証キーを追加する

.sshディレクトリを作成することは、公開鍵やこのGitサーバーへのアクセス権を決定する他の重要なデータを保存するために必要です。まず、以前に作成したgitユーザーアカウントにログインし、.sshディレクトリを作成し、アクセスをgitユーザーのみに制限します:

ssh git@address
mkdir .ssh
chmod 700 .ssh/
touch .ssh/authorized_keys

他の誰も変更できないように、chmod コマンドを使用してディレクトリアクセスのパーミッションを設定してください。.ssh ディレクトリに移動し、touch コマンドを使って新しいファイル「authorized_keys」を作成します。

cd .ssh
ssh-keygen -t rsa #only run this command if you DO NOT have an id_rsa.pub file 
cat id_rsa.pub

このファイルには、Gitサーバーへのアクセスを許可したいクライアントのSSH公開鍵を更新する必要があります。SSHセッションを一時停止し、ローカルマシンの.ssh/id_rsa.pubファイルをテキストエディタまたはcatコマンドを使用して開いてください。このファイルにはあなたの公開暗号鍵が含まれており、authorized_keysファイルに書き込むことで、パスワードなしでGitサーバーにアクセスできるようになります。

cd .ssh
vi authorized_keys

公開鍵をコピーして、Gitサーバーへの新しいSSH接続を立ち上げます。.sshディレクトリに移動し、テキストエディタでauthorized_keysファイルを開いて公開鍵を貼り付けます。変更を保存して終了します。

それ以降は、パスワードなしでサーバーに接続できるようになるはずです。サーバーに接続する各マシンについて、このステップを繰り返してください。

ステップ4: すべてのリポジトリを保存するディレクトリを作成する

Linuxサーバーにアクセスし、ディレクトリを作成するか、組み込みのディレクトリをルートディレクトリとして使用します。このディレクトリは、すべてのリポジトリが保存される場所であることを忘れないでください。これは、プロジェクトの整理をより整然とするための良い習慣です。

mkdir directory_name

ディレクトリを作成した後は、このガイドの最終ステップに進んでGitサーバーの設定を完了してください。

ステップ5:新しいプロジェクトを追加して開発を開始する

Gitサーバーの設定はほぼ完了しました。今は、リポジトリを初期化し、リモートオリジンをローカルマシンに追加することで開発を開始するだけです。cdコマンドを使用して親ディレクトリに移動し、.gitプロジェクトディレクトリを作成します:

cd parent_directory
mkdir new_project.git

今、裸のgitリポジトリを初期化します:

git init --bare

リポジトリが初期化されたので、ローカルマシンにリモートオリジンを追加する時です。

git remote add origin name git@address:new_project.git

サーバー側でやるべきことはそれだけです。これで、認証されたクライアントは、プッシュ、プル、マージ、クローンなどの通常のGit操作を行うことができます。新しいプロジェクトを開始するには、新しいプロジェクトを作成するたびにこのステップを繰り返す必要があります。

機能をテストするために git push を実行してください:

touch testfile
git add testfile
git commit -m "test file"
git push name master
git clone git@address:new_project.git

あなたのファイルはリモートオリジンに正常にプッシュされます。プッシュ操作が成功したかどうかを確認するために、リポジトリをクローンすることができます。その際、リポジトリ内にテストファイルがあることがわかるはずです。

Gitサーバーのためのセキュリティヒント

Gitサーバーが稼働している場合、そのセキュリティの重要性に十分注意を払わなければなりません。これはあなたの個人用サーバーであり、外部の脅威から維持・保護するのはあなた自身の責任です。採用すべきいくつかの優れたセキュリティ対策は次の通りです。

  • パスワードログインを無効にする
  • デフォルトシェルをgit-shellに変更します。これにより、ログインユーザーはgit以外のコマンドを発行できなくなります。
  • SSHにカスタムポートを使用する
  • ルートユーザーログインを無効にする
  • 定期的にデータをバックアップしてください

攻撃者から保護し、不正アクセスを防ぐために、Linuxサーバーに実装できる多くのセキュリティ構成や安全対策があります。

関連記事: