Подтвердить что ты не робот

Как я могу использовать Emacs Tramp для двойного перехода ssh?

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

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

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

4b9b3361

Ответ 1

Если у вас есть Emacs 24.3 или более поздняя версия, см. Joe answer для альтернативы конфигурации, описанной ниже. Если вы будете использовать этот двойной прыжок более одного раза, возможно, стоит либо изменить 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:[email protected]:"))

Где HOSTB является хостом назначения за HOSTA.

Затем введите /ssh:[email protected]:, и emacs запросит пароль HOSTA, а затем пароль HOSTB.

Ответ 2

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

   /ssh:[email protected]|ssh:[email protected]:/path

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

Ответ 3

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

Host <host that must be proxied too>
ProxyCommand ssh -qxT <gateway host> nc %h %p

Ответ 4

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

/multi:ssh:[email protected]:ssh:[email protected]:/foo/bar/baz

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