3

我正在尝试在 Emacs 中编辑一个远程文件,但我无法从文档以前的 SO 问题中获取做我想做的事情。

我正在从多个位置远程工作,并且我想在服务器 Foo 上编辑文件。服务器 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 网络中的主机发生冲突。作为一个组合,我将 Foo 添加到 Bar 的 /etc/hosts 文件中,但这似乎不起作用。有更好的解决方案吗?

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

  • 在尝试对此进行更改时,我收到的错误消息相当于“您不能在该场景中使用该远程访问方法”。如何设置第二个代理方法,让我做相当于 Cx Cf 的操作/su::/path/to/file

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

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

4

1 回答 1

1

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

于 2011-09-10T12:28:07.020 回答