Как я могу использовать Emacs Tramp для двойного прыжка SSH? - PullRequest
28 голосов
/ 04 апреля 2009

Мой кампус позволяет только SSH доступ через сервер шлюза. Таким образом, чтобы получить доступ к кластеру, на котором я пишу код, я должен подключиться через ssh к шлюзу, а затем по ssh к компьютеру, на котором я работаю. Время от времени соединение очень медленное и сложно работать.

Я бы хотел использовать что-то вроде tramp, которое, как я понимаю, открывало буфер на моей локальной машине, и общалось через сеть только при сохранении на диск. Я совсем не очень знаком с бродягой и пытаюсь заставить ее работать, особенно через двойной прыжок. В документации сказано, что это достигается путем определения прокси в tramp, но я не могу понять синтаксис.

Кто-нибудь знает, как использовать emacs для кодирования через двойной прыжок или есть альтернативный обходной путь для редактирования кода через два прыжка ssh?

Ответы [ 4 ]

22 голосов
/ 07 мая 2013

По крайней мере, в Emacs 24 есть новая версия multi, вы можете открывать пути следующим образом:

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

Я могу подтвердить, что это работает на моей версии Emacs 24.3.1. Документы описывают это здесь .

20 голосов
/ 20 мая 2009

Если у вас Emacs 24.3 или более поздней версии, см. Ответ Джо для альтернативы конфигурации, описанной ниже. Если вы будете использовать этот двойной прыжок более одного раза, возможно, стоит либо изменить tramp-default-proxies-alist, как описано ниже, либо установить tramp-save-ad-hoc-proxies в t.


Если у вас 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.

11 голосов
/ 04 апреля 2009

Вы должны использовать ssh для двойного прыжка. В вашем .ssh / config:

Host <host that must be proxied too>
ProxyCommand ssh -qxT <gateway host> nc %h %p
4 голосов
/ 13 апреля 2009

В более ранних версиях Emacs у Tramp был метод multi. В GNU Emacs 22 и ниже вы можете использовать его так:

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

, чтобы открыть /foo/bar/baz на host2. То же самое возможно в XEmacs, но с несколько другим синтаксисом. Вы также можете использовать разные методы доступа.

...