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