[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6. TRAMP の設定

TRAMP は(通常)インストールするだけで完全に機能します。初期状態では、 リモートホストへの接続に rshrcp プログラムを使用 するように設定されています。

ホストによっては、接続を確立するのに問題が起きることがあります。これは、 remote shell の振る舞いによるものです。この詳細については See section 6.8 リモートシェルの設定のヒント, を参照してください。

もし、リモートホストとの接続にこれらのコマンドを使用したくない場合は、 TRAMP のデフォルトの接続と転送メソッドを変更してください。リモート マシンに接続しファイルを転送するのに使うことのできる TRAMP のメソッド がいくつかあります (see section 6.1 リモートマシンへの接続の種類)。

6.1 リモートマシンへの接続の種類  
6.2 インラインメソッド  
6.3 外部転送メソッド  
6.4 複数のホップを使いリモートホストに接続する  
6.5 デフォルトのメソッドの選択  
6.6 非標準のメソッドを使う  
6.7 リモートマシン上で TRAMP がプログラムを発見、使用する方法  
6.8 リモートシェルの設定のヒント  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.1 リモートマシンへの接続の種類

転送メソッドには二つの基本的なタイプがあり、それぞれに長所、短所が あります。両者ともに、rshsshtelnet のようなリモートシェルにアクセスするプログラムを使用し、リモートマシン に接続します。

このコネクションは、TRAMP がローカルマシンからリモートマシンへ透過的 にアクセスするために、さまざまなオペレーションをおこなうために使われます。 ファイルをオープンした時のメソッドが異なるだけです。

リモートファイルを読み込んだり、保存する時には、二つのマシン間でファイル の内容を転送する必要があります。ファイルの内容は、マシンにログインしたの と同じコネクションか、rcpscprsync などのリモートコピープログラムを使用した別のコネクションで転送されます。 前者は インラインメソッド、後者は 外部転送メソッドとよばれます。

外部転送メソッドの性能は、一般にインラインメソッドよりすぐれています。 インライン転送では、データの符号化、復号化をおこなう必要があるからです。

このルールの唯一の例外は、scp を使用する転送メソッドです。 これらのメソッドの実際のファイル転送の性能は高いのですが、転送開始時 の暗号化にかかわるネゴシエーションのオーバーヘッドがファイル転送の性能 を帳消しにします。

外部転送メソッドを使うためには、リモートコピーコマンドが対話的でない、 つまりコマンドがパスワードのためにプロンプトを出力しないことが必要です。 もし、パスワード入力なしのリモートコピーコマンドを使う事ができないので あれば、インラインメソッドを使う必要があります。

インラインメソッドの一種に、マルチホップメソッド があります。 このメソッドを使うと、いくつかのホップを使い、リモートホストへ接続 できます。これは、あなたがセキュアなネットワークの中にいて、要塞ホスト を経由して外部に接続する場合に便利です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2 インラインメソッド

TRAMP のインラインメソッドは大変強力で、外部転送メソッドを使う事が できない状況でも動作します。インラインメソッドは、telnet 経由でリモート マシンに接続している時に動作する唯一のメソッドです(ホスト間でなく ユーザー 間のファイル転送を可能にする、ちょっと変わったメソッド もあります。以下を参照してください)。

これらのメソッドを使うためには、符号化、復号化のためのコマンドがリモート マシン上に存在しなければなりません。ローカルマシン上では、TRAMP は ファイルを復号化、符号化する Emacs の機能を使うか、外部コマンドを使用 します。

TRAMP は ファイル転送のために uuencode を使うことができます。 しかし、これはあまりお勧め できませんuuencodeuudecode コマンドは標準化されていません。すくなくともいくつかの マシン、AIX と IRIX では正しく動作しないでしょう。これらのシステム上では、 uuencode が動作しません(tramp-methods のドキュメントの AIX に関する注意を見てください)。

まとめると、もし、mimencode を使い base64 で符号化されたデータ を転送するのであれば、最近の Emacs の組み込みコマンドを使用するほうが 性能面で有利です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3 外部転送メソッド

外部転送メソッドは複数のチャネルを使用します。オペレーションのために リモートシェルのコネクションを使い、ファイル転送には、外部プログラム を使います。

これは、インライン転送時の、ひとつのコネクションを使った多重化転送のため の符号化、復号化のオーバーヘッドを削減します。

外部転送メソッドを使いたい場合は、ファイルをコピーするための転送ユーティ リティが、パスワード入力なしで実行できなければなりません。

つまり、scp を使う場合や、使っている scp がコマンド ラインでパスワードを受け付けるバージョンの場合には、ssh-agent を使う必要があるということです。(2) ssh 経由で rsync を使う場合も同様です。

もし、パスワード入力なしで scp を実行することができないが、 コネクションをセキュアにするために ssh を使いたい場合は、 ssh ベースのインラインメソッドを参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.4 複数のホップを使いリモートホストに接続する

これまでに説明したメソッドでは不十分な事があります。シンプルなメソッドを 使ってリモートホストに接続できないことがあります。たとえば、セキュアな ネットワークの中にいる場合、外部に接続する前にまず要塞ホストにログイン しなければならないでしょう。もちろん、ターゲットホストは要塞ホストも要求 します。マルチホップのファイル名のフォーマットは、通常の TRAMP の メソッドとすこし異なります。

マルチホップのファイル名は、メソッド名、ホップ数、リモートホスト上の パス名を指定します。メソッドは、インラインコネクションでどのように ファイルが転送されるかを指定します。以下のふたつのマルチホップメソッド が存在します。

それぞれのホップは ホップメソッド名、ユーザー名、ホスト名で構成 されます。以下のホップメソッドが(今、現在)存在します。

ssh を用いてポートフォワードをしたい場合や、標準的でないポートを 使用しなければならない場合があるかもしれません。そのような場合には、 ホスト名ごとに異なるポート番号を指定した記述を `~/.ssh/config' に 書き込むことで実現できます。しかしながら、multi-hop メソッドを使えば それは Tramp の枠内で実現することもできます。例えば:

 
(add-to-list 'tramp-multi-connection-function-alist
             '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n"))

とすれば、 sshf ホップを用いて、標準的なポートの変わりに 4400 番 ポートへ繋ぐことができます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.5 デフォルトのメソッドの選択

普段よく使う適切な転送メソッドを選択するには、変数 tramp-default-method を設定しなければなりません。この変数には TRAMP ファイルパスにメソッドが 指定されなかった時に使用されるデフォルトのメソッドを設定します。 例えば:

 
(setq tramp-default-method "scp")

一般的には、インライン転送メソッドよりは外部転送メソッドを選ぶべきです。 外部転送メソッドはインラインより高性能です。しかし、外部転送メソッドは、 パスワード入力なしでログインできないリモートマシンがたくさんある場合は 役に立ちません。

See section 6.2 インラインメソッド. See section 6.3 外部転送メソッド. See section 6.4 複数のホップを使いリモートホストに接続する.

転送メソッドの選択をする時に他に考慮すべき事は、それらを使う環境と、 特にインターネット上で使う場合あなたの選択したメソッドのセキュリティ との関係です。

rshtelnet メソッドは、リモートマシンにログイン する時に、パスワードをプレインテキストで送信します。ファイル転送も同じ 方法でおこなうので、他もマシンからファイルの内容を簡単に読むことができます。

インターネットからアクセス可能なリモートシステムに接続する必要がある場合、 接続に ssh ベースのメソッドを使用することを真剣に考えるべきです。 このメソッドは、高いレベルのセキュリティを提供し、誰かがパスワードを入手 したり、編集しているファイルの内容を読んだりすることを困難にします。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.6 非標準のメソッドを使う

事前に定義されたメソッドだけでは不十分な場合に、それを変更するための tramp-methods という変数があります。

変更が必要になった時のために、この変数の Lisp ドキュメントについて述べて おきます。ドキュメントは C-h v tramp-methods RET で参照する ことができます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.7 リモートマシン上で TRAMP がプログラムを発見、使用する方法

TRAMP はリモートホスト上のいくつかのプログラム、lstestfind そして cat に依存しています。

これらのツールにくわえ、コネクションメソッドのためにいくつかのツールが 必要です。詳細は 6.2 インラインメソッド6.3 外部転送メソッド を参照してください。

いくつかの他のツール、perl (あるいは perl5) と grep が存在すればそれらも使用されます。これは、性能と リモートファイルアクセスの正確さの向上のためです。

TRAMP はリモートマシンに接続した時に、使用可能プログラムを検索します。 変数 tramp-remote-path は、リモートマシン上で検索されるディレクトリ を制御します。

デフォルトで多くのマシンにとって適切なパスが設定されています。しかし ながら、ローカル(あるいはリモート)システムの管理者が、必要なツールを へんぴなディレクトリにインストールしているかもしれません。

このような場合でも TRAMP を使う事ができます。単に、必要なディレクトリ をリモートパスに追加するコードを `.emacs' に書くだけです。これで 接続時に TRAMP により、追加したディレクトリが検索されプログラムが 発見されます。

リモートサーチパスにディレクトリを追加するためには、以下のような コードを使ってください:

 
(require 'tramp)                ; TRAMP を最初にロードして
                                ; おかなればならない

; perl は "/usr/local/perl" にあります
(add-to-list 'tramp-remote-path "/usr/local/perl")


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.8 リモートシェルの設定のヒント

2. TRAMP の概要 の節で説明したように、TRAMP はリモートホストに接続し、 そこにあるシェルと対話します。もちろんログインする際にはシェルはその 初期化ファイルを実行します。例えばあなたの初期化ファイルがあなたのお母 さんの誕生日を入力させるようになっていたとしましょう; 当然 TRAMP はそのことを知らないので、そのホストへのログインに失敗します。

この問題を追求するために、いくつかの戦略が考えられます。一つは、TRAMP がすべての可能な状況に対応できるようにすることです。これは消耗戦です。 何故なら 全ての 状況を扱うことは不可能だからです。別の手として、 TRAMP の期待通りに振る舞うように、あなたにリモートホストの設定をして いただくということも出来ます。しかしこれは不便かもしれません。何故なら TRAMP を使い始めるより先に、シェルの設定に多くの労力を割く必要がある のですから。

そのことから、このパッケージではそれらを組み合わせた方法をとります。 いくつかのありふれた設定については理解しようとしてくれて、あなたには 本当に特異な設定だけを避けるように求めます。例えば、リモートホスト上で あるプログラムを見つけるためには、ディレクトリの一覧を調べます。 そしてまた、ファイルが存在するかをどうか調べる方法というのも明らかでは ないので、いくつかの異なる可能性を試してくれます。 (あるホストとシェルにおいては、test -e コマンドがその役目を果たす。 別のホスト、シェルに対してはシェルの組み込みコマンドは働かないが、 /usr/bin/test -e/bin/test -e ならうまく働く。 そしてさらに別のホストでは ls -d がその方法として働く。)

以下では、TRAMP が取り扱ってくれない、つまりあなたが正しく設定する必要 のあるいくつかの事柄について述べます。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by XEmacs Webmaster on October, 17 2002 using texi2html