Using SSH to connect to CVS


このドキュメントは、ssh を使って にアクセスするためのガイドです。

このドキュメントでは、あなたが への CVS 書き込み権限を持っていることを前提にしています。SSH を経由した anonymous または read-only アクセスは、現在のところ利用できません。read-only の CVS アクセスについての解説は ソースコード のページを、書き込み権限を得るための解説は 書き込み権限を得るには をご覧ください。

SSH キーを生成する

まずは ssh をインストールしてください。Linux、BSD および Mac OS X ディストリビューションのほとんどにはすでにインストールされているはずです。Windows では Cygwin を使って、Net カテゴリから openssh をインストールすると使えるようになります。こうした方法すべてが失敗してしまっても、OpenSSH があります。幅広く使用されており、非常に移植性の高い実装を提供しています。次のコマンドで適切なキーペアを生成することができるはずです。

ssh-keygen -t dsa

完了までに少し時間がかかり、次にパスフレーズ設定のためのプロンプトが表示されます。パスフレーズを入力すると、ssh-keygen は 2 つのファイルを生成します。



id_dsa は誰にも 送らないで ください。

Bugzilla に Server Operations バグを登録して、あなたの を添付してください。

CVS を設定して SSH を使う

お使いのシステム環境設定で、ssh バイナリがどのように呼ばれていても、必ず CVS_RSH を設定してください。ssh にパスが通っている場合は、フルパスにする必要はありません。

CVSROOT 環境変数を設定する際に、pserverext にしてください。先に使用していた pserver ツリーを保持したい場合は、ツリーの中にある各 CVS サブディレクトリ内の Root ファイルを更新する必要があります。この作業は、unix スタイルの findperl を使って行うことができます。

find . -name Root -exec perl -p -i -e "s/pserver/ext/" {} \;


Do not attempt to perform the steps in this section unless you have first verified that you can access from outside of the firewall. Only proceed with these steps once you are certain you can access from the open Internet.

If you are behind a firewall with an http tunneling proxy, you can use a program called corkscrew, in combination with the ProxyCommand ssh config directive to continue to access the mozilla CVS server. This technique was taken from Eric Engstrom's site, but the instructions have been re-written specifically for Mozilla.

  1. Download, build, and install corkscrew by following the instructions in the INSTALL file in the corkscrew source distribution. Corkscrew uses the standard "./configure; make install" technique common to many open source projects.
  2. Make sure you have a ~/.ssh/config file that has at least the following directives
PreferredAuthentications hostbased,publickey,password
  ProxyCommand corkscrew <i></i> <i>port</i> %h %p

Replace with the hostname of your proxy server, and port with the numeric TCP port on which the http tunnel is running.

The usual cvs commands should now work.


You can avoid repeated passphrase requests by using ssh-agent. If you don't already run ssh-agent on your computer, it's probably easiest to start it up whenever you set up your environment to checkout and build Mozilla. Assuming you use a shell script or batch file to set things up, just add the commands below to the end of your file.


eval `ssh-agent -s`
ssh-add ~/.ssh/id_dsa
ssh-agent -k

MS-DOS コマンドプロンプト

for /f "tokens=1,2,3* delims=; " %%a in ('ssh-agent -c') do if "%%a"=="setenv" set %%b=%%c
set HOME=/cygdrive/c/path/to/your/cygwin/home/directory
ssh-add ~/.ssh/id_dsa
start /b /wait cmd.exe
ssh-agent -k

Essentially both sets of commands do the same thing. First ssh-agent is called and its output is evaluated in the current environment. This sets environment variables that let cvs know how to find and use the agent. Your private key is then added to ssh-agent using ssh-add at which point you will be prompted for the key's passphrase. Since it's important that you kill the agent when you're finished with it, the last three lines start a child environment that, when exited, will result in the agent's process being killed. The environment you will actually use to build is the child environment.

There are a few things to note about the commands for the MS-DOS Command Prompt. First of all they will only work in versions of Windows based on NT (NT/2000/XP). If you're building on Win9x/WinME you'll need to find an alternative solution. If you're typing the commands directly (as opposed to storing them in a batch file that you call), you'll need to replace the occurances of "%%" in the first line with "%". Finally, note that ssh-add needs the environment variable HOME to be set with the cygwin path to your cygwin home directory.