| |||||
学外からのCVSアクセスCVSリポジトリがpllab.jaist.ac.jpの/proj/cvsrepositoryにあると する。このリポジトリに、学外からアクセスしたい。 ネットワーク環境前提としているネットワーク環境はつぎのとおり。 localhost fep.jaist.ac.jp pllab.jaist.ac.jp +--------+ +----------------+ +-----------------+ | +----(WAN)---(22) +---(Intra)---+ | +--------+ +----------------+ +-----------------+こちらで説明している。 アクセスメソッドcvsがリモートサーバにアクセスする手段には、主なものとして次の 二つが用意されている。
CVSが使用するコマンドの設定
cvsがローカルマシン上で起動するコマンド
( $ export CVS_RSH=ssh $ export CVS_SERVER=/pkg/all/bin/cvs ポートフォワーディングすでに述べたように、学外からJAIST内のサーバ(pllab)に 直接ssh接続することはできない。 そこで、fepを経由するport forwardingを利用する。 sshはポート22を使用する。したがって、port-forwardingによって つぎのような接続状況が得られればよい。
localhost fep.jaist.ac.jp pllab.jaist.ac.jp
+--------+ +---------------+ +-----------------+
cvs->ssh->(22)-(ssh)-(p1)==========(22)---(sshd)--(p2)---(22)->sshd->cvs |
+--------+ +---------------+ +-----------------+
しかし、この方法には、二点問題がある。 まず、ポート22はsshサーバ(sshd)が通常使うポートであり、 sshサーバがポート22を使用している場合、この方法は使えない。 また、ポート22が使用されていない(bindされていない)場合であっても、 ポート22は特権ポートなので、使用(bind)するにはroot権限が必要である。
したがって、cvsコマンドから起動されるsshコマンドに、
22以外のポートを使わせるようにしなければならない。
接続先にcvs.pllabを指定すると、この設定が適用される。
そして、つぎのようにport-forwardingを実行しておく。 # ssh -L 2222:pllab.jaist.ac.jp:22 fep.jaist.ac.jp -l kiyoshiycvsを実行すると、接続状況はつぎのようになる。
localhost fep.jaist.ac.jp pllab.jaist.ac.jp
+----------+ +---------------+ +-----------------+
cvs->ssh->(2222)-(ssh)-(p1)==========(22)---(sshd)--(p2)---(22)->sshd->cvs |
+----------+ +---------------+ +-----------------+
使用するcvsの指定JAIST標準のcvsは少しバージョンが古いため、 ssh経由での接続がうまくいかない。 たとえばcheckoutを試みるとつぎのエラーメッセージが表示されて失敗する。
$ cvs -d:ext:kiyoshiy@cvs.pllab:/proj/cvsrepository checkout public_html
Enter passphrase for RSA key '/home/yamato/.ssh/identity':
CVS commands are:
add Add a new file/directory to the repository
admin Administration front end for rcs
annotate Show last revision where each line was modified
checkout Checkout sources for editing
commit Check files into the repository
diff Show differences between revisions
edit Get ready to edit a watched file
editors See who is editing a watched file
export Export sources from CVS, similar to checkout
history Show repository access history
import Import sources into CVS, using vendor branches
init Create a CVS repository if it doesn't exist
log Print out history information for files
rdiff Create 'patch' format diffs between releases
release Indicate that a Module is no longer in use
remove Remove an entry from the repository
rtag Add a symbolic tag to a module
status Display status information on checked out files
tag Add a symbolic tag to checked out version of files
unedit Undo an edit command
update Bring work tree in sync with repository
watch Set watches
watchers See who is watching a file
(Specify the --help option for a list of other help options)
cvs [checkout aborted]: end of file from server (consult above messages if any)
かわりに、/pkg/all/bin/cvsを使用する。
このためには、CVS_SERVER=/pkg/all/bin/cvs; export CVS_SERVER CVSリポジトリからのファイル取り出しCVSROOTとして、次のように、アクセスメソッド ext、サーバ上でのアカウントkiyoshiy、 ssh/configに追加した接続先ホスト名cvs.pllab、 サーバ上でのリポジトリのパスを指定する。 $ export CVSROOT=:ext:kiyoshiy@cvs.pllab:/proj/cvsrepository以下のように、リモートサーバ上のリポジトリからモジュールを 取り出すことができる。 $ cvs checkout Project1 あるいは以下のようにおこなう。 $ cvs -d :ext:kiyoshiy@cvs.pllab:/proj/cvsrepository checkout Project1 参考 |
| ||||||