FreeBSD上に置いたSubversionのリポジトリに、Windowsからssh+svnでアクセスするための設定のメモ。
以前、TortoiseSVNを設定したときの手順が非常にややこしかったのは、SSHの鍵の使い分け方が理解できていなかったのと、authorized_keysの設定の仕方がわかっていなかったため。この2点を押さえれば、結構すっきり。
環境
- サーバ: FreeBSD 10 (Subversion 1.8.9)
- クライアント: Windows7 (コマンドライン 1.8.9、TortoiseSVN 1.8.7)
Windows側にはPuTTYがインストール済みの前提。
クライアント側の設定
コマンドラインツール
-
Apache Subvesionバイナリパッケージのページを参照し、バイナリ配布しているサイトの中から好きなパッケージを選択してダウンロード。自分はVisualSVNからダウンロードした。なお、TortoiseSVNを使うのにコマンドラインツールは特に必要ない。ただ単にコマンドラインのツールも使ってみたくてインストールしているだけ。
-
インストールフォルダを作成し、ダウンロードしたZIPファイルの中にあるbinの下のファイルをすべて展開。
-
システム環境変数にコマンドラインツールをインストールしたフォルダへのパスを追加。
-
C:\Users\(ユーザ名)\AppData\Roaming\Subversion\config をエディタで開き、[tunnels] のディレクティブの下に次の行を追加する。
ssh = plinkw.exe -P 9000 -i C:/home/user/.ssh/svn_rsa2.ppk
-
コマンドラインからサーバ上のファイルを一覧表示して動作確認。
# svn list svn+ssh://<ユーザ名>@<ホスト名>/<リポジトリ名>
TortoiseSVN
-
TortoiseSVNダウンロードページから64bit版のインストーラと、日本語用Language packをダウンロードし、順にインストール。
-
Rekisaのサイトから.NET 2.0用の最新版をダウンロードし、インストールフォルダを作成してその下に展開し、インストールしたフォルダへのパスをシステム環境変数Pathに追加する。
-
エクスプローラを開き、どこでも良いので適当なフォルダの上で右クリックして「Preferences」を選択し、「Language」を日本語に設定する。一度閉じて開き直すと表示が日本語に変わる。
-
もう一度TortoiseSVNの設定ウィンドウを開き、差分ビューアの「異なるリビジョンのファイルの比較に使用するプログラムの設定」と「異なるリビジョンのプロパティ..(略)」に次のようにRekisaを指定する。
"C:\Program Files\rekisa\Rekisa.exe" -Title=%yname "%mine" -Title=%bname "%base"
SSHの設定
-
PuTTYgen.exeを起動し、SSH-2 RSA 2048bitを選択してキーを作成する。
-
秘密鍵に名前を付けて保存する。ここではC:\home\user\.ssh\svn_rsa2.ppkとしておく。通常のSSH接続用の鍵とは別の名前をつけて、分けて用意する。そうしないと、サーバ側のauthorized_keys内で設定の使い分けができないため。
-
エクスプローラを開き、適当なフォルダの上で右クリックしてTortoiseSVNの設定ウィンドウを開き、ネットワーク > SSH > SSHクライアントに次のように設定する。
"C:\Program Files\putty\plinkw.exe" -P 11212 -i C:\home\user\.ssh\svn_rsa2.ppk
-Pオプションの後ろは、サーバ側でSSHポートを変更している場合のポート番号。変更していなければ設定不要。
サーバ側の設定
SVNインストール
もともと入っていたので特に作業なし。もし新規に入れるなら、portmasterでコマンド一発。
# portmaster devel/subversion
SSHの設定
-
authorized_keysファイルを作成し、PuTTYgen上に表示されている公開鍵をコピー&ペーストする。
# cd # mkdir .ssh # chmod 700 .ssh # vi .ssh/authorized_keys (公開鍵をコピー&ペースト)
-
authorized_keysをエディタで開き、追加した鍵の先頭を次のように書き換える。
command="/usr/local/bin/svnserve -t -r /usr/local/rep" ssh-rsa AAAAB3NzaC(略
動作確認
コマンドライン
コマンドラインからサーバ上のファイルを一覧表示して動作確認。「ユーザ名@」の部分は、サーバ上のリポジトリ管理ユーザとWindowsでログインしている名前が一緒なら指定を省略可。
# svn list svn+ssh://<ユーザ名>@<ホスト名>/<リポジトリ名>
TortoiseSVN
適当なフォルダの上で右クリックし、TortoiseSVN > リポジトリブラウザーでリポジトリブラウザを開き、リポジトリを入力する。
svn+ssh://<ユーザ名>@<ホスト名>/<リポジトリ名>
一覧が表示されれば確認完了。
後は「TortoiseSVN Windows用Subversionクライアント」(公式マニュアル)を見ながら使うだけ。すべてきっちり翻訳されていて翻訳の質も良いので、下手な入門書を買うよりこちらを参照した方が良い。