SVN+SSHの鍵認証セットアップ(Cornerstone編)
Macの高機能SVNクライアントことCornerstoneでの
SVN+SSH鍵認証による環境構築のメモです。
なお、手順1〜4はCUI編と全く一緒です。
1.公開鍵・秘密鍵の作成
認証用の公開鍵・秘密鍵を作成します。
なお、既にSSH認証用の鍵を持っている場合でも一から作成します。(理由は後述)
ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (ホームディレクトリ/.ssh/id_rsa): key.svn Enter passphrase (empty for no passphrase):パスワード Enter same passphrase again:パスワード Your identification has been saved in key.svn. Your public key has been saved in key.svn.pub.
2.公開鍵の登録
作成した公開鍵をサーバに登録します。
サーバの~/.ssh/authorized_keysに
作成した公開鍵ファイル(上記ではkey.svn)の内容をコピペします。
vi ~/.ssh/authorized_keys
公開鍵データ 公開鍵データ ・・・ 末尾に新たに作成した公開鍵データをペースト
ここで、ペーストした公開鍵の前に以下command〜を挿入します。
公開鍵データ 公開鍵データ ・・・ command="/opt/bin/svnserve -t" 末尾に新たに作成した公開鍵データをペースト
svnserveへのパスはご自身のサーバの環境をご確認ください。
これをしないと、SVN+SSHログインしたときに以下の様にsvnserveコマンドが無いよと
怒られてしまう場合があります。
svn checkout svn+ssh://ホスト名 bash: line 1: svnserve: command not found svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file. svn: Network connection closed unexpectedly
このcommand〜を挿入することで上記のエラーを回避できます。
しかし、その代償としてSSHで正常にログインできなくなります。
新しく鍵を作成するのはこのためです。
3.SSHデーモン再起動
authorized_keysの設定を有効にするために、SSHデーモンを再起動します。
4.クライアントのSVN+SSH接続設定
SVN(CUI)でSSH接続出来るように、$SVN_SSHに設定情報を追加します。
SVN_SSH="ssh -p ポート番号 -i 秘密鍵のフルパス" export SVN_SSH
5.既に登録されている秘密鍵の削除
チェックアウト元のサーバの接続で使用する秘密鍵が登録されていると、
svn用に新たに作成した秘密鍵で上手く接続してくれません。
そこで、登録済みの秘密鍵を削除します。
ssh-add -D
6.リポジトリのチェックアウト
CornerstoneにてSSHトンネル+鍵認証を用いてチェックアウトします。
Cornerstoneを起動し、「Add Repository」ボタンをクリックします。
「SVN Server」タブを選択します。
SVNサーバの設定画面が表示されたら、「Tunnel」を「SSH」にします。
「Server」にご自身のサーバホスト名、
「Repository Path」にサーバのリポジトリ絶対パスを入力してください。
入力したら、「Add」ボタンをクリックします。
チェックアウトが成功すると、リポジトリブラウザ画面が表示されます。
公開鍵・秘密鍵の設定はCUIの時とほぼ同様です。
一度秘密鍵を登録すると、常にその秘密鍵で接続しに行ってしまうので、
一度ssh-addコマンドで登録した鍵を削除する必要がある点に気をつければ
問題無いと思います。
■参考文献
Apache Subversion FAQ
Connecting to an SVN Server via a Tunnel – Cornerstone