ssh の port forward 経由で cvs する方法.

ファイアウォールの内側のリポジトリをグローバル側からアクセスしたい場合など, ssh のポートフォワード経由で cvs したい場合が,たまにある.やっと方法がわかったので,メモ.

前提

のような構成で,

とする.

方法

なんとかして,LOCALの22番ポートを,GLOBALの10022 にポートフォワードする.たとえば FIREWALL にGLOBALからsshできるなら,GLOBAL上で

$  ssh  FIREWALL  -L  10022:LOCAL:22

または,LOCAL上で

$  ssh  GLOABL -R 22:LOCAL:10022

などとする.

GLOBAL側の cvslocalhost:10022 にSSHで接続するようにする.GLOBAL側の ~/.ssh/config に以下の記述を追加.

Host  cvs-serv
        HostName 127.0.0.1
        Port         10022

あとは cvs-serv に接続するだけ.

cvs -d cvs-serv:/path/to/cvsroot


ポイントは ~/.ssh/config で設定を行うところ.CVS_RSH 環境変数ssh のオプションを指定しても,cvsは正しく認識できないみたい.