Как я могу использовать Emacs Tramp для двойного прыжка SSH?

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

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

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

5 ответов

Решение

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

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

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

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

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

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

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

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

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

Используя идею @fuzzy-waffle,

полная конфигурация будет выглядеть так:

      Host servera
  Hostname servera.lan.local
  User servera-user
  ProxyCommand ssh gateway-server -W %h:%p

Добавьте свой ~/.ssh/id_rsa.pubили же ~/.ssh/id_ed25519.pubк ~/.ssh/known_keysна servera.

В конце концов, вы можете бежать C-x C-f /ssh:servera:~/abc.txt

Другие вопросы по тегам