Using SSH to connect to CVS

はじめに

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

このドキュメントでは、あなたが cvs.mozilla.org への 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 つのファイルを生成します。

~/.ssh/id_dsa

~/.ssh/id_dsa.pub

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

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

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 cvs.mozilla.org from outside of the firewall. Only proceed with these steps once you are certain you can access cvs.mozilla.org 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
Host cvs.mozilla.org
  ProxyCommand corkscrew <i>proxyserver.foo.com</i> <i>port</i> %h %p

Replace proxyserver.foo.com 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.

POSIX シェル

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

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
exit

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.

Document Tags and Contributors

Contributors to this page: Yoshino
最終更新者: Yoshino,