Начиная с Emacs 24.3, аналог старого синтаксиса multi:
был наложен поверх современного подхода tramp-default-proxies-alist
, что означает, что вы можете снова выполнять многократные прыжки без какой-либо предварительной настройки. Подробнее см .:
C-h i g (tramp) Ad-hoc multi-hops
RET
С новым синтаксисом каждый 'прыжок' отделяется |
. Пример в руководстве:
C-x C-f /ssh:bird@bastion|ssh:you@remotehost:/path
RET
Который подключается сначала как bird@bastion
, а оттуда к you@remotehost:/path
/ su: или / sudo: на удаленных хостах
Вы также можете использовать этот синтаксис для sudo / su для root (или, конечно, для любого другого пользователя) на удаленном хосте:
C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file
RET
Важно : обязательно указывайте имя хоста явно: sudo:remotehost:
вместо sudo::
(см. Ниже).
Поскольку здесь все еще используется прокси-механизм, tramp-default-proxies-alist
теперь должен включать значение ("remotehost" "root" "/ssh:you@remotehost:")
Это означает, что прокси /ssh:you@remotehost:
будет использоваться всякий раз, когда вы запрашиваете файл как root@remotehost
.
root
является пользователем по умолчанию для этих методов, но вы, конечно, также можете перейти к пользователю без полномочий root с помощью:
C-x C-f /ssh:you@remotehost|sudo:them@remotehost:/path/to/file
RET
Всегда указывайте имя удаленного хоста явно
Возможно, вы привыкли использовать sudo::
или su::
и не указывать имя хоста. Если вы остаетесь на локальном хосте, тогда это все в порядке, но если вы переходите на удаленный сервер, тогда вы должны указывать имя хоста для каждого прыжка - даже если это так же, как и для предыдущего прыжка. Всегда используйте sudo:hostname:
или su:hostname:
с удаленными хостами.
Ловушка здесь заключается в том, что sudo::
действительно действительно работает - однако , когда вы делаете так, что HOST для записи динамического прокси будет именем хоста, которого вы возникла с хоста, к которому вы подключены. Это будет выглядеть не только сбивающим с толку (так как в путях к файлам будет отображаться неверный хост), но также будет означать, что любая последующая попытка использовать sudo::
на вашем локальном хосте будет вместо этого передаваться на удаленный сервер! (и прокси-сервер также, вероятно, будет заблокирован, если вы сделаете то же самое на втором сервере, что вызовет дальнейшие проблемы).
Короче говоря, не используйте ::
при многопрыжке!