[イントラネット用途での邪道な]CVSサーバーの設定メモ 2001/10/04 第1版 2001/11/14 改定第2版 文責 : 宗近 ( munetika@niji-net.com )  CVSサーバーの設定を行った時のメモです。 サービス自体は直接CVSのサービスのポート(Port 2401)を直接外部に 公開するのではなく、クライアントからsshによるIPトンネリング等を 利用して、sshのサービスのポート(Port 22)からアクセスする方がセキ ュアであると思います。  当然この文章は無保証です。  何かトラブルがあった場合でも筆者は責任を負うものではありません。 環境 : Vine Linux 2.1.5 第1部 サーバーの設定 1.グループの作成 # groupadd cvs 2.ユーザーの作成 # useradd -g cvs -d /home/cvsroot -s /bin/false cvs 3./etc/inetd.confの編集  cvspserverのエントリを作成します。  以下の1文を追加します。 cvspserver stream tcp nowait root /usr/sbin/tcpd cvspserver.sh 4./usr/sbin/cvspserver.shの作成  inetdから起動されるシェルスクリプト/usr/sbin/cvspserver.shを 以下の内容で作成します。 ----- /usr/sbin/cvspserver.sh ----- #!/bin/sh /usr/bin/cvs -f --allow-root=/home/cvsroot pserver ----------------------------------- 上記のファイルは適当な実行権限を与えておくこと。 5./etc/hosts.allowの編集 仮に現在設定しているCVSサーバーのアドレスが192.168.0.100であると したら/etc/hosts.allowに次の一文を追加しておく。 cvspserver.sh : localhost 192.168.0. 192.168.0.100 なお、ここでlocalhostの他に自分自身のIPアドレスを書いておかないと IPトンネリングでうまくアクセスできなかったことを付記しておく。 6.inetの再起動 3.〜5.の作業が完了したらinetdを再起動する。 # /etc/rc.d/init.d/inet restart 7.リポジトリの作成  リポジトリとは設定情報を格納する器で、CVSを利用するのに必ず必要に なります。 # export CVSROOT=/home/cvsroot # cvs init 8.ログインアカウントを作成する CVSには専用のログインアカウントが必要になります。  ツールを使ってユーザーアカウントを作成します。 「JF committers mini-HOWTO」から高林さんの作られた'cvsadduser'というツール (Perlスクリプト)を入手します。 JF committers mini-HOWTO : http://www.linet.gr.jp/~fuku/JF-committers/JF-committers.html  そこにも書いてありますが、cvsadduserを実行しアカウントとcryptされたパスワー ドを生成します。生成したアカウントおよびパスワードを$CVSROOT/CVSROOT/passwdに 追加します。 % perl cvsadduser cvs account: foobar # アカウント名を入力 password: # パスワードを入力 Re-enter password: # もう一度パスワードを入力 real account (can be omitted):cvs # 実ユーザーは'cvs'にしておく foobar:5/tS5Rk4UzvCM: # <-生成されたアカウントとパスワードの組合せ ----- $CVSROOT/CVSROOT/passwd --- : : foobar:5/tS5Rk4UzvCM:cvs --------------------------------- こうすることによりcvsユーザーfoobarは実ユーザーcvsの権限となります。  実ユーザーcvsにはログインシェルを割り当てていないのでより安全となります。 9.CVSROOTのパーミッションの設定  http://komura.net/cvs.htm を参考にしました。 # cd /home/cvsroot # chown cvs.cvs -R . # chmod ug+rwx . CVSROOT # chmod g+s . CVSROOT 10.localhostからログインしてみる # cvs -d :pserver:munetika@localhost:/home/cvsroot login (Logging in to munetika@localhost) CVS password: パスワードが一致した場合、メッセージを出さずにプロンプトへ戻る(ログインした状態のまま) # cvs -d :pserver:munetika@localhost:/home/cvsroot login (Logging in to munetika@localhost) CVS password: cvs login: authorization failed: server localhost rejected access パスワードが一致しなかった場合、上記のメッセージを出力してログインに失敗します 11.mailを送る設定を追加  コミット(意味はWinCVSのマニュアルを見ながら調べてね)がユーザーによって行われた ことをメールにより通知することができます。宛先をプロジェクトメンバーが参加するメ ーリングリスト宛にすれば、参加する全てのメンバーに通知を行うことができます。 $CVSROOT/CVSROOT/loginfoに以下の1行を追加する DEFAULT /usr/lib/cvs/contrib/log %s -m user@yourdomain -f $CVSROOT/CVSROOT/commitlog 12.WinCVSを使って動作確認を行う(ローカルネットワークから)  WinCVSを使って動作確認を行います。  WinCVSの入手方法および使用方法については下記のURLを参考にしてください。  WinCVS1.2の日本語化は「がらくた置場」さんが参考になります。 「WinCVS / cvs knjwrp ダウンロードなページ」 http://www.linkclub.or.jp/~tumibito/soft-an/cvs/download.html  「がらくた置場」   http://www.kmc.kyoto-u.ac.jp/~slakichi/barn/ 第2部 外部のネットワークからセキュアにCVSサーバーにアクセスする  12番までの作業が完了したら、おめでとうございます。  あなたはローカルネットワークからCVSサーバーを利用することができます^^ しかし、外部のネットワークから同じCVSサーバーをアクセスしたいこともあるでしょう。  その場合、sshでIPトンネリングを行いセキュアな環境でCVSサーバーにアクセス する方法があります。  ここでは外部のネットワークからWindowsクライアントを利用している想定で話を 進めます。 1.事前作業 WindowsクライアントにcygwinおよびWinCVSを導入しておきます。  cygwinについては入手方法およびインストール方法が詳細に書かれている下記の サイトを参考にしてください。 http://www.mars.dti.ne.jp/~sohda/cygwin/setup.html  ここで、必ずOpenSSHを導入しておいてください。通常はインストールされるはず です。  できればOpenSSHは公開鍵認証で認証を行うように設定します。  以下のサイトが参考になります。 http://home7.highway.ne.jp/dayan/tips/unix/ssh.html 2.IPフォワーディングするためのバッチファイルの作成  WindowsクライアントにIPフォワーディングするためにバッチファイルを適当な 名前を付けて作成し、「デスクトップ」にでも置いておきます。 [バッチファイルの内容] ssh -2 -L 2401:www.xxx.yyy.zzz:2401 acount@www.xxx.yyy.zzz www.xxx.yyy.zzzはアクセスするサーバー(CVSサーバー)のIPアドレス acountのところは管理者から教えてもらったログイン名に読み替えます。 3.CVSサーバーへのアクセス(準備)  バッチファイルを起動します。すると先ほど作成した公開鍵認証の場合鍵ののパス フレーズを要求してきます。 C:\Documents and Settings\acount\デスクトップ>ssh -2 -L 2401:www.xxx.yyy.zzz:2401 acount@www.xxx.yyy.zzz Enter passphrase for key '/home/Administrator/.ssh/id_dsa':XXXXXXXX 'XXXXXXXX'のところへパスフレーズを入れます。  公開鍵認証にしていない場合、通常のパスワード(UNIXのログインアカウントのパスワード)を 入力します。  すると、ログイン先のプロンプトが表示されます。この状態でアクセス 可能になります。 Last login: Tue Nov 13 10:59:09 2001 from www.xxx.yyy.zzz unknown terminal "cygwin" [acount@cvsserver acount]$ 4.CVSサーバーへのアクセス(WinCVS) WinCVSを起動します。  メニューバーの「Admin」->「Preference」を選択し、「General」の 「Enter the CVSROOT」を以下のように設定(入力)します。 (注意)日本語化したWinCVSでは「管理」->「設定」->「CVSROOT(CVSリポ ジトリ場所)の入力」 :pserver:acount@localhost:/home/cvsroot acountの部分は各自に割り当てられたCVSサーバー上でのユーザー名 になります。 「Authentication」は「"passwd" file on the cvs server」を選択して おきます。 (注意)日本語化したWinCVSでは「認証方法」->「CVSサーバー上の"passwd" ファイルで認証」  次に、メニューバーの「Admin」->「login」を選択します。 (注意)日本語化したWinCVSでは「管理」->「ログイン」  「Enter the password」とパスワードを聞いてくるので、管理者から 与えられたCVSサーバー上でのユーザーのパスワードを入力します。 (注意)日本語化したWinCVSでは「パスワード」を入力  ログオンは1度だけでよく次回からはログインの必要はありません。  後は、チェックアウト等必要な作業を行います。 これで外部のネットワークからアクセスした場合も、セキュアな状態で通信を 行うことができます。