付録G SSH を用いた安全な svnserve

目次

Linux サーバの設定
Windows サーバの設定
TortoiseSVN と併せて使用する SSH クライアントツール
OpenSSH 証明書の作成
ssh-keygen を用いた鍵の作成
PuTTYgen を用いた鍵の作成
PuTTY を用いたテスト
TortoiseSVN と併せた SSH のテスト
様々な SSH の設定

本節は、Subversion と TortoiseSVN で svn+ssh プロトコルを使用するよう設定する段階的ガイドです。サーバにログインするのに、すでに認証済み SSH 接続を使用している場合、すでに本節で説明する段階に達しています。さらなる詳細は、Subversion book で見つかるでしょう。まだ SSH を使用しておらず、Subversion を保護するために SSH を使用したい場合は、Subversion のユーザごとに、独立した SSH のユーザアカウントをサーバに用意しなくてもすむ、簡単な方法をガイドします。

この実装では、全 Subversion のユーザ用に、ひとつの SSH ユーザアカウントを作成し、実際の Subversion ユーザで分けるのに、異なる認証鍵を使用します。

この付録では、すでに Subversion のツールをインストールしてあり、このマニュアルですでに述べたようなリポジトリを作成してあると仮定しています。SSH とともに使用する場合、svnserve をサービスやデーモンとして起動するべきでないということに注意してください。

ここの情報の多くは、Marc Logemann が提供しているチュートリアル (www.logemann.org にあります) から来ています。Windows サーバに設定するさらなる情報は、Thorsten Müller が提供しています。ありがとうございます!

Linux サーバの設定

サーバで SSH を有効にする必要があります。また、おそらく OpenSSH を使用していると思います。ほとんどのディストリビューションには、これがすでにインストールされていると思います。以下のように入力して ssh のジョブを探してください。

ps xa | grep sshd

注意すべき点は、Subversion をソースからビルドする際、./configure に引数を何も与えない場合、Subversion は /usr/localbin ディレクトリを作成し、そこにバイナリを配置するということです。SSH でのトンネリングモードを使用する場合、ユーザが SSH でログインするには、svnserve プログラムやその他のバイナリを、実行する必要があるということを意識しなければなりません。このため、PATH 変数に/usr/local/bin を含めるか、/usr/sbin ディレクトリやその他の PATH にある共通のディレクトリに、バイナリへのシンボリックリンクを作成するかを行う必要があります。

すべて問題ないか確認するには、SSH で対象ユーザとしてログインし、以下を入力してください。

which svnserve

このコマンドは、svnserve に到達できるかを確認します。

svn リポジトリにアクセスする際に使用する、新しいユーザを追加してください。

useradd -m svnuser

必ず、リポジトリへのすべてのアクセス権を与えてください。