SubversionのSSHで鍵を指定する
% svn co svn+ssh://hogehoge
とかで、sshを使ってSubversionにアクセスできることはしってたんだけど、いつもDAV経由にしちゃうのであまり使ったことがなかった。
で、今回は、ssh経由でsvnにアクセスしなきゃならなかったんだけど、DSA(別にRSAでもいいんだけど)の公開鍵を使って接続する方法がわからなかったから調べてみた。
あ、前提として、接続先サーバには鍵認証を使ってsshできるようになっていること。
結論から言うと、どうやら scheme を自分で定義することになるようだ。
$HOME/.subversion/configを見ると、
### Section for configuring tunnel agents. [tunnels] ### Configure svn protocol tunnel schemes here. By default, only ### the 'ssh' scheme is defined. You can define other schemes to ### be used with 'svn+scheme://hostname/path' URLs. A scheme ### definition is simply a command, optionally prefixed by an ### environment variable name which can override the command if it ### is defined. The command (or environment variable) may contain ### arguments, using standard shell quoting for arguments with ### spaces. The command will be invoked as: ### <command> <hostname> svnserve -t ### (If the URL includes a username, then the hostname will be ### passed to the tunnel agent as <user>@<hostname>.) If the ### built-in ssh scheme were not predefined, it could be defined ### as: # ssh = $SVN_SSH ssh (snip)
とか書いてある。
というわけで、こういう記述を足してみた。
sotarok = /usr/bin/ssh -i /home/sotarok/key_of_sotarok
普通のsshコマンドのときに鍵を指定するように、-iで鍵を指定。
そうすると、
% svn co svn+sotarok://sotarok@example.com/path/to/repo
のようなカンジでアクセスできる。
パスフレーズ無しの鍵を作っておいて、こうして独自の scheme を定義してあげれば、それ以降何も打たずに co ci ほげほげできる。
そのうえ、まるで自分の名前のプロトコルができたようでカッコイイ(
追記
コメントいただきましたので、追記。
普段から ssh の config 使ってる人は、こんな設定するまでもないっぽいです><
Host sotarok HostName example.com User sotarok IdentityFile /home/sotarok/key_of_sotarok
って設定してあったら、
% svn co svn+ssh://sotarok/path/to/repo
でいけました!
ちなみに、