プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

さくらサーバでsvn+sshを利用する方法(Linux/Mac)

SVNの閲覧はtracからできるようになったので、今度はクライアントからSVNを操作できるように設定します。まずは普通に接続してみたのですが、[svnserve: command not found] とでて接続できません。

[ client ]
$svn co svn+ssh://user@user.sakura.ne.jp/path/to/svn
svnserve: command not found


さくらインターネットに設置した subversion で ssh ログイン時に発生するエラーによると、サーバ側のログインシェルのパスがSSH接続の際に設定されないとのこと。そこでSSHした際にも設定されるパスでコマンドを実行できるようにリンクを作成して試したところ、今度は問題なく接続できました。

[ server ]
$ln -s /home/user/local/bin/ /home/user/bin


接続はできましたがこのままでは接続のたびにパスワードを聞かれてちょっとうっとおしいので、もうちょっと楽をできるようにします。まずは鍵を作成してサーバに登録。ssh-keygenを実行すると秘密鍵と公開鍵(.ssh/id_rsa, .ssh/id_rsa.pub)が生成されます。

[ client ]
$ssh-keygen -t rsa


生成した公開鍵をサーバへ転送して登録します。

[ client ]
$scp .ssh/id_rsa.pub user@user.sakura.ne.jp:/home/user/.ssh/id_rsa.pub
$ssh -l user user.sakura.ne.jp

[ server ]
%cd .ssh
%cat id_rsa.pub >> authorized_keys
%rm id_rsa.pub


これで鍵を使ったsshのログインが可能となりましたが、まだパスフレーズを聞かれるのでちょっと微妙です。そこでssh-agentを利用してパスフレーズもスキップできるようにします。(ssh-agent でパスフレーズの入力を省くを参考にさせて頂きました)

[ client ]
$ssh-agent bash
$ssh-add
$ssh -l user user.sakura.ne.jp

ssh-agentが有効な間(ssh-agentの起動シェルを終了するか、exitするまで)はこれで自動認証されるので、パスフレーズ入力も不要になりました。SourceForgeも同様の方法で利用できたりします。