2007年12月26日

さくらインターネットに設置した subversion で ssh ログイン時に発生するエラー

エラーが発生する原因は下記が理由。


/usr/bin などの「普通のパス」に svnserve がインストールされている場合は何もしなくても SSH トンネリング経由でクライアント側からそれを実行できるが、そうでない場合はそのままでは実行できない。そして、サーバ側のログインシェルのパスの設定をいじってもそのような「普通でないパス」を検索できるようにはできない。というのも、SSH トンネリングではログインシェルを起動せずにコマンドの実行を行う必要があるからだ。 SSH は独自にコマンド検索パスを持っている。
[Subversion] 普通でないパスに入っている svnserve をトンネリングで使用したい
調べたところ、これは ssh サーバ sshd の設定によって、 ssh 経由でリモートからコマンドを発行したとき、コマンドサーチパスである PATH をはじめとしたユーザ環境に制限がかけられているから、とのことらしい。なるほど、だから "command not found" なのだね。じぶんは、コマンドサーチパスのある場所にはインストールしていないのだから、このような結果となった。
すると、レンタルサーバゆえにサーバの設定は変えられないので、その制限された中で出来る事といえば、コマンドサーチパスのある場所に、 svn 関連コマンドを置く事、それしか、なさそうだ。--その唯一と思えたアプローチは、さいわいうまくいった。
リモートホスト、つまり ssh 接続先であるリポジトリを置いたレンタルサーバでは、次のように、コマンドサーチパスの設定の中に、じぶんのパーミッションが許されている場所があった。
$ ssh -l username hostname 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/username/bin

最後の "/home/username/bin" がそれで、とりもなおさずホームディレクトリの bin ディレクトリ。したがって、ここに、必要な svn 関連のコマンドを置いてしまえばよい、ことになる。
これで万事よし、というよりは、 sakura のレンタルサーバをリポジトリに利用するには、このようにするほか、手段がないのかもしれない。
svn クライアント環境

上記の記述で「ここに、必要な svn 関連のコマンドを置いてしまえばよい、ことになる。」と記述されているが、下記の設定で済む。

$ ln -s $HOME/subversion_path/bin $HOME/bin

接続を試みる。

$ svn list svn+ssh://username@username.sakura.ne.jp/home/username/works/repos/yourproject
username@username.sakura.ne.jp's password:
branches/
tags/
trunk/



トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔