*

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

CentOS7 Postfix+Dovecot+SSL/TLS 設定

今回は禁断のメール設定です。 メールは他に比べて設定がわかりづらいし、連携するミドルウェアが多いし

記事を読む

no image

iptablesで特定のIPからの接続を遮断

WordPressを利用して作成しているこのブログなのですが、管理画面へのログインリンクがあるせいな

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

SSL脆弱性/セキュリティ設定

昨今POODLEやらFREAKやらと大きめなOpenSSLの脆弱性が多発していました。 最近では安

記事を読む

no image

PidoraにZabbix2.2を入れてみた

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

記事を読む

no image

Raspberry Piのpidoraをセットアップ

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

記事を読む

no image

Raspbian(jessie)にssh鍵認証で接続

Debianがjessieになって、sshd_configのデフォルトの設定が変わりました。 それ

記事を読む

no image

rsyncでsshの鍵を指定してデータ転送

今回は旧サーバから新サーバへいろいろ移設するために便利なrsyncの設定です。 設定というほどのも

記事を読む

no image

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

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

記事を読む

Message

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

PAGE TOP ↑