Subversionのリポジトリをsvn+sshで管理する
通常Subversionを使う場合、-dオプションを付けてsvnserveをデーモンとして起動しておく必要があります。ですが、SSH経由でSubversionを利用する場合はsvn+sshによる接続時にsvnserve -tとトンネルモードでsvnserveが起動されるため、あらかじめ起動しておく必要はありません。
パスワード認証でsvn+ssh通信する場合はそれほど特別な設定をせずとも、svn+ssh://user@host/repos/hogeでリポジトリにアクセスできます。が、鍵認証を使用する場合は少し手を入れてやらなければいけません。新たに鍵認証を使用するサンプルはわりと見付かるのですが、普段から鍵認証を使用している場合にSubversionの設定を追加する方法はあまり解説されていないので、自分のやった設定をメモしておきます。
■リポジトリのパーミッション設定
この作業はリポジトリを設置したサーバで行います。リポジトリへのアクセスはグループ権限で行います。ここでは、subversionグループを作成し、リポジトリへのアクセス権限を設定するため、以下のコマンドをrootで実行します。
# groupadd subversion ← グループ作成 # usermod -G subversion user ← userをsubversionグループに追加 # cd /usr/local/svn # chgrp -R subversion . ← 所有グループの変更 # chmod -R 770 . ← パーミッション設定 # chmod -R g+s . ← setgidビット設定 # umask 002 ← umask設定
■Subversion用のSSH鍵を作る
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): ← そのままEnter Enter passphrase (empty for no passphrase): ← パスフレーズを入力 Enter same passphrase again: ← パスフレーズをもう一度入力
これでid_rsa(秘密鍵)とid_rsa.pub(公開鍵)を作成します。次に、~/.ssh/authorized_keysに新しく作った公開鍵の情報を追加します。viで開いて、追加する行の先頭に、
command="/usr/bin/svnserve -t -r /usr/local/svn" ssh-rsa (公開鍵情報)
のように接続時のコマンドを指定します。これで、この鍵を使って接続した時に指定のコマンドが実行されます。この例では、svnserveをトンネルモードで起動するオプションと、リポジトリのルートディレクトリの指定を入れています。
秘密鍵は適当な名前に変えて自分の環境に持ってきます。リポジトリへの接続はこの秘密鍵を使用します。
■環境変数SVN_SSHを設定
ここからの作業は、リポジトリに接続する側のサーバで行います。
次に、接続時のSSHコマンドを環境変数SVN_SSHに設定します。
export SVN_SSH="ssh -l user -i /home/user/.ssh/subversion.ppk"
これを~/.bashrcに追加します。これでsvn+ssh://〜で接続する時のsshコマンドを設定します。
この部分の設定は、svnserve.confの[tunnels]セクションに設定を追加することで、複数の接続コマンドを使い分けることが可能です(試してないけど)。詳しくはsvnserve, 専用サーバ|Subversion によるバージョン管理をどうぞ。
これで、
svn co svn+ssh://user@host/repos/hoge/trunk .
のようにSSH経由でリポジトリにアクセスできるようになります。
この設定だと、チェックアウトやコミットの度にパスフレーズを入力しないといけませんが、このあたりはセキュリティとトレードオフなので何とも言えないところです。前述のリンクを参考にSubversion用の鍵での権限を適切に設定した上で、パスフレーズなしでアクセスできるようにする、というのが妥当な線かも知れません。
■参考書籍
パーミッションの設定はこの本を参考にやってます。若干書き方が薄いけど、とっかかりとしてはいい資料かと。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
- 作者: Mike Mason,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2007/04/21
- メディア: 単行本(ソフトカバー)
- 購入: 35人 クリック: 672回
- この商品を含むブログ (102件) を見る