Emacs 24.3の時点で、古いmulti:
構文の類似物が最新のアプローチの上に階層化されていtramp-default-proxies-alist
ます。つまり、事前の構成なしでマルチホップを再度実行できます。詳細については、以下を参照してください。
C-hig (tramp)Ad-hoc multi-hops
RET
新しい構文では、各「ホップ」は。で区切られ|
ます。マニュアルの例は次のとおりです。
C-xC-f /ssh:bird@bastion|ssh:you@remotehost:/path
RET
最初にとして接続しbird@bastion
、そこからyou@remotehost:/path
/ su:または/ sudo:リモートホスト上
この構文を使用して、リモートホスト上のroot(またはもちろん他のユーザー)にsudo/suすることもできます。
C-xC-f /ssh:you@remotehost|sudo:remotehost:/path/to/file
RET
重要:ホスト名を明示的に指定してください:sudo:remotehost:
ではなくsudo::
(以下を参照)。
これはまだ下のプロキシメカニズムを使用しているためtramp-default-proxies-alist
、値を含める必要があります("remotehost" "root" "/ssh:you@remotehost:")
/ssh:you@remotehost:
としてファイルを要求するたびにプロキシが使用されることを意味しますroot@remotehost
。
root
これらのメソッドのデフォルトユーザーはですが、もちろん、次のコマンドを使用して非rootユーザーに変更することもできます。
C-xC-f /ssh:you@remotehost|sudo:them@remotehost:/path/to/file
RET
常にリモートホスト名を明示的に指定してください
ホスト名の使用sudo::
またはsu::
省略に慣れている可能性があります。ローカルホストにとどまっている場合、これは問題ありませんが、リモートサーバーにホッピングしている場合は、前のホップと同じであっても、すべてのホップのホスト名を指定する必要があります。常にsudo:hostname:
またはsu:hostname:
リモートホストで使用してください。
ここでの罠は、sudo::
実際には機能しているように見えることです。ただし、これを行うと、動的プロキシエントリのホストは、接続したホストではなく、発信元のホスト名になります。これは混乱を招くように見えるだけでなく(ファイルパスに間違ったホストが表示されるため)、ローカルホストでのその後の使用の試みsudo::
が代わりにリモートサーバーにプロキシされることも意味します!(そして、2番目のサーバーで同じことをした場合、プロキシもおそらく破壊され、さらに問題が発生します)。
::
つまり、マルチホップの場合は使用しないでください。
Emacs 27+
Emacs 27.1(またはGNUELPAパッケージを使用している場合はTramp2.4.2)以降、::
ケースは直感的に機能し、独自のローカルホストではなく/ssh:you@remotehost|sudo::
再利用されるため、不正なプロキシエントリが発生することはありません。remotehost
さらに、のようなもの/ssh:you@remotehost|sudo:localhost:
が検出され、ユーザーエラーとしてフラグが付けられます。
27より前のバージョンを含むEmacsバージョンを混在させて使用する可能性がある場合(または古いバージョンを使用している可能性のある他の人にアドバイスしている場合)、::
マルチホッピング時に安全でないものとして扱い続けるのが最も安全です。潜在的な事故。(つまり、トランプのバージョンが不明な場合は、正しいリモートホストを明示的に指定することが最も安全なアプローチです。)