Ubuntuのローカル環境でGitサーバーを構築してみよう!

今回は、Ubuntuのローカル環境でGitサーバーを構築する手順をご紹介したいと思います。

はじめに

Ubuntuのローカル環境でGitサーバーを構築する利点を上げるとすると主に下記3点が思い浮かびます。

  • ローカル環境でGitを管理するためカスタマイズし易い。

  • 複数人でGitを共有する場合でも人数制限がない。

  • Gitサーバーを構築することでサーバー構築の勉強になる。

Gitは代表的なバージョン管理ツールです。バージョン管理ツールとはソースの変更履歴を管理するためのツールのことです。

バージョン管理ツールは、SVNやGitなどが有名です。Wikipediaさんでバージョン管理ツールを使うシステムについて書かれています。

バージョン管理システム(バージョンかんりシステム、VCS)とは、コンピュータ上で作成、編集されるファイルの変更履歴を管理するためのシステム。 特にソフトウェア開発においてソースコードの管理に用いられることが多い。

Gitを提供するサーバーとして有名はGitHubは、機能制限付きですが無料プランでもプライベートレポジトリを無制限に作ることができるようになったようです。(2019/1/7から)

GitHubなどのバージョン管理サーバーも内部的にGitコマンドを使っていて、GitHubで管理するソースをGitHub内のサーバーに保存しています。

リモートレポジトリの作成

ローカル環境にリモートリポジトリを作成します。

レポジトリとはソース一式を格納する格納庫のようなものです。

$ mkdir repositories
$ cd repositories
$ mkdir myapp.git
$ cd myapp.git
$ git --bare init --shared

リモートレポジトリを作成しても「git fetch」コマンドでエラーが出る場合の対処方法を表にしました。

エラーメッセージ対処方法
ssh: connect to host 192.168.*.* port 22: Connection refusedsshサーバーのインストール
Permission denied (publickey,password)sshdの設定
ssh公開鍵認証の実装
「git fetch」コマンドを実行することでローカル環境のGitサーバーに正しく接続できるかを確認することができます。

sshサーバーのインストール

sshサーバーであるopenssh-serverをインストールします。

$ sudo apt purge openssh-server
$ sudo apt install openssh-server

sshdの設定

sshサーバーの設定ファイルであるsshdの設定を行います。

「/etc/ssh/sshd_config」ファイルの内容を下記の通り変更してください。

#ポートは暫定的に22を使います
Port 22
#rootログインを禁止
PermitRootLogin no
#パスワード認証を禁止
PasswordAuthentication no
#PAM認証を禁止
UsePAM no

ssh公開鍵認証の実装

sshサーバーに公開鍵認証方式で接続できるようにssh公開鍵認証の実装を行います。

リモートリポジトリのあるGitサーバーで秘密鍵と公開鍵を作成します。(今回はローカル環境です)

$ ssh-keygen -t rsa

Enter file in which to save the keyと聞かれるので、鍵の名前「id_rsa」を入力します。

Enter passphrase (empty for no passphrase):と聞かれるので、パスフレーズなしの空でエンターを押下します。

下記2ファイルが作成されます。

  • id_rsa(秘密鍵)
  • id_rsa.pub(公開鍵)

公開鍵をクライアント側に配置しないといけないのですが、今回は引き続きローカル環境で下記コマンドを実行します。

$ mv id_rsa.pub ~/.ssh
$ cd ~/.ssh

# (1)か(2)、該当するコマンドを実行します

# (1).ssh配下にauthorized_keysが既にある場合
$ cat id_rsa.pub >> authorized_keys
$ rm id_rsa.pub

# (2).ssh配下にauthorized_keysがない場合
$ mv id_rsa.pub authorized_keys

# authorized_keys ファイルのパーミッションを 0600 に変更
$ chmod 600 authorized_keys

まとめ

「git fetch」コマンドを実行後エラーが出なければ、ローカル環境のGitサーバーに接続できています!

GitHubで非公開リポジトリを作成する方法については、下記URLを参考にしてください。

最後までお読み頂きありがとうございました。

参考URL

下記のURLを参考にさせて頂きました。

ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です