*

CentOSにSSH鍵認証で接続するGitリポジトリを作成

公開日: : 最終更新日:2014/03/02 投稿者:raru Linux

今回友人と共同開発を行なうと思い、ざっくりとGitサーバを建ててみました。
私はSVNの方が好きなのですが、流行がGitっぽいので日和ってみました。

概要

今回の環境は以下のようになります。
サーバ: CentOS 6.5
クライアント: Mac OS Mavericks

この環境で、クライアントからgitに対してsshの鍵認証で接続します。
pushが行なえるところまで確認してみようと思います。

サーバ

まずはサーバ側の設定を行なっていきます。
今回はサービスの準備とGitの設定やユーザの追加を行ないます。
操作は基本的にrootで行なっています。
本当はsudoから実行するのが正しい形なのかな、とも思います。

サービスの設定

# yum -y install git git-daemon git-all
# cp /etc/xinetd.d/git /etc/xinetd.d/git.org
# vi /etc/xinetd.d/git 
# diff /etc/xinetd.d/git.org /etc/xinetd.d/git
7c7
<         disable         = yes
---
>         disable         = no

# chkconfig --list xinetd
xinetd         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
# chkconfig xinetd on
# chkconfig --list xinetd
xinetd         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
# service xinetd restart

yumでgit関連のパッケージをインストールします。
次にxinetdの設定を行なっています。

xinetdは簡単に言うとサーバにアクセスがあったときにだけ対象のデーモンを起動するためのサービスです。
今回はgitに対して設定を行なっているので、サーバは基本的にgitのサービスを停止していますが、クライアントからgitへの通信が発生したときにだけサービスを立ち上げ、通信が終わるとサービスを停止するような動作を自動的に行なってくれるようになるようです。
便利ですね。

リポジトリの作成

では次にgitのリポジトリを作成していきましょう。

# cd /var/lib/git/
# mkdir public
# cd public/
# mkdir test.git
# cd test.git
# git --bare init --shared

ここではxinetdのpathに指定されているフォルダである
/var/lib/git の直下に共有フォルダを作成してます。

グループ/ユーザの準備

次にgitへアクセスするユーザの作成 or 既存ユーザのgitグループへの追加を行ないます。

# groupadd git
# cat /etc/group | grep git
git:x:501:
# useradd -g git fugafuga // <- 適切にユーザ名を指定
# passwd fugafuga
# usermod -G wheel,git hogehoge
# chown -R root:git .

新たにgitグループを作成し、新規作成するユーザをgitグループに追加します。
また既存ユーザについてはwheel権限はそのままにプラスでgitグループに追加しています。
usermod -G wheel, git hogehoge とするとエラーとなります。
コンマのあとにスペースをつけてはいけません。

ssh鍵の作成

新規に追加したユーザをsshで接続出来るよう設定します。

# su - fugafuga 
# cd
# mkdir .ssh
# cd .ssh
# ssh-keygen -t rsa
# cat id_rsa.pub >> authorized_keys
# chmod 600 authorized_keys
# rm -f id_rsa.pub

fugafugaユーザに切り替わり、ssh-keygenコマンドでrsa鍵を作成しています。
pubファイルをリネームし、権限を600にします。
sshのファイルは一定の権限でないと有効なファイルとなりませんので注意してください。

またここで作成された id_rsa ファイルをgitで接続するクライアントへ送ってください。
このファイルがサーバへ接続する為の鍵となります。

クライアント

サーバの設定が終わったら、今度はクライアントの設定を行ないます。

$ cd
$ vi ~/.ssh/config
Host centos
  HostName  192.168.1.2
  Port      22
  User      username
  IdentityFile  ~/.ssh/id_rsa
$ mkdir test
$ cd test
$ echo "Git Test" > test.txt
$ git init
$ git add test.txt
$ git commit -m "first commit test"
$ git remote add origin ssh://centos/var/lib/git/public/test.git
$ git push origin master

.sshフォルダ以下にconfigというファイルを生成します。
このファイルはGitのみに使用されるファイルではなく、通常のssh接続にも使用されます。
このファイルがあるとsshのコマンドで指定するポート番号と鍵ファイルの指定を省略することが出来ます。
上記ファイルであれば
ssh centosのような形でアクセス出来ます。楽ですね。

非常に簡単になりますが、上記の設定でsshを使用したgitのアクセスが出来るかと思います。

関連記事

no image

RaspberryPi2のFedora22にOpenVPN構築

コツコツと以前購入してoverclockしたraspberry pi2にOpenVPNを構築していま

記事を読む

no image

RaspbianにRedmine3を導入

普段Zabbixを入れて運用しいてるRaspbianにRedmineも入れてみました。 ややスペッ

記事を読む

no image

Raspberry Pi2/ラズベリーパイ2にFedoraをインストール

Raspberry pi2にFedoraがインストールできるという情報を入手したので2台目を購入して

記事を読む

no image

PidoraにZabbix2.2を入れてみた

※完璧な状態ではありません。 こちらの記事のzabbix設定周りを行うと解決する可能性がありま

記事を読む

no image

Raspberry Pi/ラズベリーパイ を注文しました

Linuxの学習用途にお勧めされているRaspberry Piを注文しました。 ラズベリーパイ

記事を読む

no image

RedmineからsSMTPでメールを送信

Redmineの管理画面にアクセスしたところメール通知設定は所定のファイルを編集しないとできないよう

記事を読む

no image

RaspbianのZabbix ServerにZabbix Agentをインストール

前回の記事でRaspbianにZabbixサーバをインストールしてみました。 今回はzabbi

記事を読む

no image

ZabbixでSSL証明書期限チェック

zabbixは初期状態でhttps系の監視が微妙なため、証明書期限の監視設定などを行ってみたいと思い

記事を読む

no image

Raspbianをwheezyからjessieにアップグレード

2015/04頃にdebianのバージョン8 jessieがリリースされたようです。 それに伴い、

記事を読む

no image

Raspberry Pi 2(Raspbian) 初期設定

性懲りもせずにRaspberry pi2を購入しました。 初代に比べて相当スペックが向上しており、

記事を読む

Message

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

PAGE TOP ↑