使用Emacs和Tramp通过网关到达远程主机

时间:2011-06-06 21:32:24

标签: emacs ssh elisp tramp

我正在尝试在Emacs中编辑远程文件,但我无法从the documentationprevious SO questions进行操作。

我在各个地方远程工作,我想在服务器Foo上编辑文件。 Server Foo不能直接从Internet访问,但服务器Bar是,而Foo接受来自Bar的连接。我可以指望到达Bar,Bar可以指望到达Foo。

Tramp文档告诉我,我需要添加到Tramp的代理列表来执行此操作,并且它应如下所示:

(add-to-list 'tramp-default-proxies-alist
    ("foo_host" "seanm" "/ssh:seanm@bar_host"))

然而,当我尝试时,它不起作用,我收到难以理解的错误信息。

  • 我怎样才能明确地引用Foo?没有DNS服务器知道如何从其主机名中查找Foo,而Foo的IP地址位于10.0.0.0/8私有空间中。我不想通过该IP地址引用Foo,因为这可能会与我可能访问的其他10.0.0.0/8网络中的主机发生冲突。作为一个kludge,我将Foo添加到Bar的/ etc / hosts文件中,但这似乎不起作用。有更好的解决方案吗?

  • 我需要遵守哪些引用规则?我看到的例子都使用“双引号”和“勾选单引号”,后者显然需要双反斜杠转义。我不明白那里发生了什么 - 似乎有多层解析,这个字符串将被推翻。

  • 在尝试对此进行修改时,我收到的错误消息相当于“您无法在该方案中使用该远程访问方法”。如何设置第二个代理方法让我相当于C-x C-f /su::/path/to/file

与之前的多跳语法相比,这一切看起来都非常痛苦。

后来:我能够正确地进行多层转义,以便emacs正确“听到”主机的名称。但是,我无法在一秒钟之内获得任何跳跃才能正常工作,这在功能上非常令人失望。

1 个答案:

答案 0 :(得分:1)

正确的答案是使用Host,HostAlias和ProxyCommand指令修改我的SSH配置。