5

Emacs Tramp をダブルホップするようにセットアップするのを手伝ってくれませんか? machine1.abc.def.edu 経由でのみ接続できる machine2.abc.def.edu で作業したいと考えています。私のユーザー名は myname で、両方のマシンで同じです。

.emacs を追加しようとしました:

(add-to-list 'tramp-default-proxies-alist
          '("\\`machine2\\.abc\\.def\\.edu\\'"
            "\\`myname\\'"
            "/ssh:machine1\\.abc\\.def\\.edu:"))

これは、マニュアルに記載されている内容の私の最良の推測の解釈です。次に、次のようにします: Cx Cf /ssh:machine2.abc.def.edu または: Cx Cf /ssh:rsuhada@machine2.abc.def.edu

しかし、両方が与えます:

ssh: Could not resolve hostname ssh: nodename nor servname provided, or not known
Process *tramp/scpc ssh* exited abnormally with code 255

そして、私の Aquamacs は終了できず、シェルから強制終了する必要があります... 同じ質問の 2 年間のスレッドがここにあります。私はそこから答えを試しました:

(add-to-list 'tramp-default-proxies-alist
          '("machine2.abc.def.edu"
            nil
            "/ssh:myname@machine1.abc.def.edu:"))

同じ結果で... 私が思いつくすべての組み合わせでも... machine1.abc.def.edu でのリモート編集は問題なく動作します。

4

3 に答える 3

10

答えは、ssh_config で利用可能なssh_proxyコマンドを使用することです。ここここに文書化されています。基本的に、ショートカットを書き込むことができる ssh フォルダーに構成ファイルを作成します。ショートカットの 1 つは、別のエンドポイント経由でプロキシを使用することです。すべてのショートカットは、git や emacs など、ssh を使用するすべてのツールで機能します。

Host endpoint2
     User myusername
     HostName mysite.com
     Port 3000
     ProxyCommand ssh endpoint1 nc -w300 %h %p

Host endpoint1
     User somename
     HostName otherdomainorip.com
     Port 6893

この例では、runningssh endpoint2は endpoint1 を自動的に通過します。

于 2011-05-01T18:49:50.123 に答える
4

では、トンネルを開かずに、別のことを試してみましょう。あなたの .emacs ファイルで次のことはどうですか:

(add-to-list 'tramp-default-proxies-alist 
             '("\\`machine2\\'" 
               nil 
               "/ssh:%u@machine1.abc.def.edu:"))

これは、フォーラムの投稿で見つけたコードと次の 2 つの点で異なります。

  1. ターゲットホスト名の周りに目盛りを追加します(部分的な名前の一致を避けるためのEmacs正規表現構文)
  2. ターゲットホストでサブドメイン名のみを使用します(以下のコメントで、完全なドメイン名を使用するとmachine2にsshできないと報告しました)

これは、machine2 のファイルにアクセスしようとするときに役立ちますか?

于 2011-05-01T17:08:33.743 に答える
2

machine1 から machine2 への ssh トンネルをセットアップします (sshd が machine2 のポート 22 で実行されていると仮定します)。

machine1.abc.def.edu> ssh -f -N -L 2222:localhost:22 machine2.abc.def.edu

次に、次のように Emacs から machine2 に接続します。

/ssh:machine1.abc.def.edu#2222

または、次の行を .emacs に追加します。

(add-to-list 'tramp-default-proxies-alist
             '("\\`machine2\\.abc\\.def\\.edu\\'" nil
               "/tunnel:machine1.abc.def.edu#2222:"))
于 2011-05-01T12:09:32.600 に答える