TRAMP file name syntax can accommodate ad-hoc specification of
multiple proxies without using
configuration setup (see Connecting to a remote host using multiple hops).
Each proxy is specified using the same syntax as the remote host specification minus the file name part. Each hop is separated by a ‘|’. Chain the proxies from the starting host to the destination remote host name and file name. For example, hopping over a single proxy ‘bird@bastion’ to a remote file on ‘you@remotehost’:
C-x C-f /ssh:bird@bastion|ssh:you@remotehost:/path RET
Each involved method must be an inline method (see Inline methods).
TRAMP adds the ad-hoc definitions on the fly to
tramp-default-proxies-alist and is available for re-use during
that Emacs session. Subsequent TRAMP connections to the same
remote host can then use the shortcut form:
‘/ssh:you@remotehost:/path’. Ad-hoc definitions are
tramp-default-proxies-alist via the command
M-x tramp-cleanup-all-connections RET (see Cleanup remote connections).
For ad-hoc definitions to be saved automatically in
tramp-default-proxies-alist for future Emacs sessions, set
tramp-save-ad-hoc-proxies to non-
(customize-set-variable 'tramp-save-ad-hoc-proxies t)
Ad-hoc proxies can take patterns
%u like in
tramp-default-proxies-alist. The following file name expands
to user ‘root’ on host ‘remotehost’, starting with an
ssh session on host ‘remotehost’:
On the other hand, if a trailing hop does not specify a host name, the host name of the previous hop is reused. Therefore, the following file name is equivalent to the previous example: ‘/ssh:remotehost|su::’.