2011-06-06 96 views
3

我试图在Emacs中编辑远程文件,并且我无法从the documentationprevious SO questions获取我想要的内容。通过网关使用Emacs和Tramp访问远程主机

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

流浪者文档告诉我,我需要添加到流浪汉的代理列表要做到这一点,那它应该看起来像下面这样:

(add-to-list 'tramp-default-proxies-alist 
    ("foo_host" "seanm" "/ssh:[email protected]_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正确'听到'主机的名称。但是,我无法在一秒之内获得任何跳数来正常工作,这是功能非常令人失望的失误。

+3

虽然这是可能的IIRC,另一种方法是配置SSH通过酒吧到达Foo。在OpenSSH中,使用'Host'别名和'ProxyCommand'选项;您会在[Super User](http://superuser.com/),[Unix](http://unix.stackexchange.com/)或[Server Fault](http:// serverfault)上找到大量示例。 COM /)。 – Gilles 2011-06-06 23:37:03

+0

这对于第一个和第二个问题是非常有帮助的,但它看起来并不像它会帮助重复'/ su ::/path/to/file'的功能。 – 2011-06-07 00:44:20

+1

原则上我应该能够在elisp中完成这件事。 – 2011-06-07 15:34:53

回答

1

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