*

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

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

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

記事を読む

no image

個人でのProxyサーバ利用用途

Proxyサーバを建てたいということで、利用用途を考えていました。 まずサイト高速化であったり冗長

記事を読む

no image

RedmineからsSMTPでメールを送信

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

記事を読む

no image

Raspbianでメール送信 ssmtp編

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

CentOS7にウイルスソフト(Clamd)を導入

今回はLinuxのウイルス対策ツールのClamdの導入を行いたいと思います。 Windowsマシン

記事を読む

no image

CentOS7にwordpressを移行

前の記事で初期設定を行ったサーバにwordpressを移設します。 wordpressの移設は案外

記事を読む

no image

Raspberry Piのpidoraをセットアップ

以前私はRaspberry PiにPidoraを入れたのですが、初期設定をしたつもりになっていてして

記事を読む

no image

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

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

記事を読む

Message

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

PAGE TOP ↑