TortoiseSVN と併せた SSH のテスト

ここまで、SSH を用いたログインができるかどうかだけをテストしてきました。今度は、SSH 接続で実際に svnserve を実行できるかを、確認する必要があります。サーバでは、以下のように /home/svnuser/.ssh/authorized_keys を変更して、たくさんの subversion 作者に同じシステムアカウント svnuser を許可します。subversion 作者は同じログイン名ですが、異なる認証鍵を使用することに注意してください。そのため、全ユーザ用に 1 行追加しなければなりません。

注意: これ全部で、非常に長い 1 行です。

command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
            no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
            no-pty ssh-rsa <PublicKey> <Comment>

設定に従って、セットする必要があるいくつかの値があります。

<ReposRootPath> は、リポジトリがあるディレクトリへのパスに置き換えられます。これにより、URL 中にサーバまでのフルパスを指定せずともよくなります。Windows サーバであっても、通常のスラッシュを使用しなければならないことに注意してください (例: c:/svn/reposroot)。以下の例では、repos というリポジトリルート以下のリポジトリフォルダと仮定します。

<author> は、コミット時に格納したい svn author で置き換えます。これはまた、svnserve が svnserve.conf で指定した自身のアクセス権を使用するようにもできます。

<PublicKey> は先ほど生成した公開鍵に置き換えられます。

<Comment> は、お好みのコメントを記述できますが、svn author 名と実名とのマッピングに使うと便利です。

Windows エクスプローラのフォルダで右クリックし、TortoiseSVNリポジトリブラウザ を選択してください。URL の入力を求められるので、次の形で入力してください。

svn+ssh://svnuser@SvnConnection/repos

この URL はどのような意味でしょうか? サーバへのリクエストの扱い方を、TortoiseSVN に教えるスキーマ名は、svn+ssh です。スラッシュ 2 つの後、サーバに接続するユーザ名を指定します。この場合は svnuser です。@ の後、PuTTY のセッション名を指定します。このセッション名には、秘密鍵とサーバの IP アドレスや DNS 名をどこから取得するかといった詳細が、すべて含まれています。最後にリポジトリへのパスを指定しなければなりません。authorized_keys に指定したように、サーバのリポジトリルートからの相対パスとなります。

OK をクリックすると、リポジトリの内容を閲覧できるでしょう。こうなれば、TortoiseSVN と連動して、SSH トンネリングで動作したことになります。

デフォルトでは、TortoiseSVN は自身が持つバージョンの Plink を、接続に使用することに注意してください。これは、接続するたびにコンソールウィンドウがポップアップするのを防ぎますが、エラーメッセージを出力する先がないということでもあります。Unable to write to standard output というエラーを受け取ったときは、TortoiseSVN のネットワーク設定で、クライアントに Plink を指定するようにしてみてください。これにより Plink が生成した真のエラーメッセージを見られるようになります。