我正在尝试在 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 正确地“听到”主机的名称。但是,我无法让任何跳跃超过一秒才能正常工作,这是功能上的一个非常令人失望的失误。