tramp で sshx で multihop

;;「で」が multihop.

実は何度も何度も試してみていたんだけど、どうにも sshx で multihop できないなぁと悩んでいた。どうも sshx は multihop に使えるメソッドとして登録されていないっぽい。

各ホップは ホップメソッド 指定、つまりユーザ名とホスト名から成ります。ホップメソッドはインラインメソッドのみになり得ます。以下のホップメソッドが(今のところ)利用可能です:

  • telnet
  • rsh
  • ssh
  • su
  • sudo

※ 各メソッドの説明は省略しています。

ということでマニュアルの

sshx
お分かりのように、これは ssh とちょっと違った類似物です。 ssh がリモートホストで通常の対話的シェルを開くのに対し、このオプションは `ssh -t -t host -l user /bin/sh' を使って接続を行ないます。この方法は、通常のログインシェルが、ログインの際に質問をしてくるように設定してある場合に有用です。この手順によりそれらの質問を回避して、`標準的な' ログインシェルを tramp に使わせることができます。

の記述を頼りに .emacs に

(require 'tramp)
(setq tramp-default-method "sshx")
(add-to-list
  'tramp-multi-connection-function-alist
  '("sshx" tramp-multi-connect-rlogin "ssh -t -t %h -l %u /bin/sh%n"))

と書いてみたら繋がった1。うむうむ。これやっぱ補完できないと不便だね。次は補完か。

cf.

  1. このとき、ユーザー名は省略できない。ちょっと引っ掛かった。 

More