*

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

RaspbianにZabbixをインストール

今回はRaspbianにZabbixをインストールしてみたいと思います。 前回のPidoraでは「

記事を読む

no image

CentOSで不要カーネルの削除

サーバを利用して時間が経過すると溜まってくるLinuxのkernelの削除方法の備忘録。 忘れるた

記事を読む

no image

RaspberryPI3にCentOS7をインストール (mac利用)

いつの間にやらRaspberryPI 3が発売し、さらにはCentOSまでもがraspberry p

記事を読む

no image

Raspberry Pi/ラズベリーパイ にFedora(Pidora)をインストール

Raspberry PI2にFedoraをインストール 注文していたRaspberry P

記事を読む

no image

SPFの送受信設定

今回はSPFの設定を行います。 SPFとは何かということについてはここでは割愛しますが、メールの送

記事を読む

no image

Firewalldで特定IPからの接続をdrop

このサイトは見ての通りwordpressなのですが、wordpressではloginのurlが推測さ

記事を読む

no image

OpenDKIMを利用したメール認証

今回はOpenDKIMを利用したメール認証設定を行います。 DKIMやらSPFやら、メールは何かと

記事を読む

no image

Raspbianでメール送信 ssmtp編

Raspbianで監視などをおこなっているとメールが送信したくなります。 とりあえず何かと管理用に

記事を読む

no image

ZabbixからsSMTPを利用してエラー通知メール送信

今回はsSMTPを利用してRaspbian上のZabbix Serverからアラートメールの送信を行

記事を読む

no image

yum使いがハマるaptitudeの罠 update

最近までaptitudeの使い方に関して大いなる勘違いをしていました。 yum使いの皆様も私と同様

記事を読む

Message

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

PAGE TOP ↑