31

我的校园只允许通过网关服务器进行 ssh 访问。因此,要访问我正在编码的集群,我必须 ssh 到网关,然后 ssh 到我正在使用的机器。连接有时非常慢,并且令人沮丧。

我很想使用类似 tramp 的东西,我知道它会在我的本地机器上打开缓冲区,并且只有在我保存到磁盘时才通过网络交谈。我对 tramp 一点也不熟悉,而且很难让它发挥作用,尤其是通过双跳。文档说这是通过在tramp中定义代理来完成的,但我无法理解语法。

有谁知道如何使用 emacs 通过双跳进行编码,或者有另一种解决方法来通过两个 ssh 跳来编辑代码?

4

4 回答 4

29

至少从 Emacs 24 开始,他们有一个新版本的 multi 你可以像这样打开路径:

   /ssh:bird@bastion|ssh:you@remotehost:/path

我可以确认这适用于我的 Emacs 24.3.1 版本。文档在此处对其进行了描述。

于 2013-05-07T01:55:44.753 回答
21

如果您有 Emacs 24.3 或更高版本,请参阅Joe 的回答以获取下面描述的配置的替代方案。如果您将多次使用此双跳,则可能值得tramp-default-proxies-alist如下所述进行修改,或设置tramp-save-ad-hoc-proxiest.


如果您有 Emacs 23.1 或更高版本,则multi不再支持该方法。您可以通过配置“代理”来获得相同的结果。

在您的.emacs配置文件中添加以下内容:

(add-to-list 'tramp-default-proxies-alist
                 '("HOSTB" nil "/ssh:USERA@HOSTA:"))

其中 HOSTB 是 HOSTA 后面的目标主机。

然后键入/ssh:USERB@HOSTB:,emacs 将提示输入 HOSTA 密码,然后是 HOSTB 密码。

于 2009-05-20T15:19:22.600 回答
11

您应该使用 ssh 进行双跳。在您的 .ssh/config 中:

Host <host that must be proxied too>
ProxyCommand ssh -qxT <gateway host> nc %h %p
于 2009-04-03T21:54:24.363 回答
4

在早期的 Emacs 版本中,Tramp 有一个multi方法。在 GNU Emacs 22 及更低版本上,您可以像这样使用它:

/multi:ssh:user1@host1:ssh:user2@host2:/foo/bar/baz

打开。/foo/bar/baz_ host2在 XEmacs 上也可以进行同样的操作,但语法有所不同。您也可以使用不同的访问方法。

于 2009-04-13T00:00:24.083 回答