ファイアウォールの内側のリポジトリをグローバル側からアクセスしたい場合など, ssh のポートフォワード経由で cvs したい場合が,たまにある.やっと方法がわかったので,メモ.
方法
なんとかして,LOCALの22番ポートを,GLOBALの10022 にポートフォワードする.たとえば FIREWALL にGLOBALからsshできるなら,GLOBAL上で
$ ssh FIREWALL -L 10022:LOCAL:22
または,LOCAL上で
$ ssh GLOABL -R 22:LOCAL:10022
などとする.
GLOBAL側の cvs は localhost: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は正しく認識できないみたい.