Как я могу использовать 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