Inline methods
==============
The inline methods in TRAMP are quite powerful and can work in
situations where you cannot use an external transfer program to connect.
Inline methods are the only methods that work when connecting to the
remote machine via telnet. (There are also strange inline methods which
allow you to transfer files between _user identities_ rather than
hosts, see below.)
These methods depend on the existence of a suitable encoding and
decoding command on remote machine. Locally, TRAMP may be able to use
features of Emacs to decode and encode the files or it may require
access to external commands to perform that task.
TRAMP checks the availability and usability of commands like
`mimencode' (part of the `metamail' package) or `uuencode' on the
remote host. The first reliable command will be used. The search path
can be customized, see Note:Remote Programs.
If both commands aren't available on the remote host, TRAMP
transfers a small piece of Perl code to the remote host, and tries to
apply it for encoding and decoding.
`rsh'
Connect to the remote host with `rsh'. Due to the unsecure
connection it is recommended for very local host topology only.
On operating systems which provide the command `remsh' instead of
`rsh', you can use the method `remsh'. This is true for HP-UX or
Cray UNICOS, for example.
`ssh'
Connect to the remote host with `ssh'. This is identical to the
previous option except that the `ssh' package is used, making the
connection more secure.
There are also two variants, `ssh1' and `ssh2', that call `ssh -1'
and `ssh -2', respectively. This way, you can explicitly select
whether you want to use the SSH protocol version 1 or 2 to connect
to the remote host. (You can also specify in `~/.ssh/config', the
SSH configuration file, which protocol should be used, and use the
regular `ssh' method.)
Two other variants, `ssh1_old' and `ssh2_old', use the `ssh1' and
`ssh2' commands explicitly. If you don't know what these are, you
do not need these options.
All the methods based on `ssh' have an additional kludgy feature:
you can specify a host name which looks like `host#42' (the real
host name, then a hash sign, then a port number). This means to
connect to the given host but to also pass `-p 42' as arguments to
the `ssh' command.
`telnet'
Connect to the remote host with `telnet'. This is as unsecure as
the `rsh' method.
`su'
This method does not connect to a remote host at all, rather it
uses the `su' program to allow you to edit files as another user.
`sudo'
This is similar to the `su' method, but it uses `sudo' rather than
`su' to become a different user.
Note that `sudo' must be configured to allow you to start a shell
as the user. It would be nice if it was sufficient if `ls' and
`mimencode' were allowed, but that is not easy to implement, so I
haven't got around to it, yet.
`sshx'
As you would expect, this is similar to `ssh', only a little
different. Whereas `ssh' opens a normal interactive shell on the
remote host, this option uses `ssh -t -t HOST -l USER /bin/sh' to
open a connection. This is useful for users where the normal
login shell is set up to ask them a number of questions when
logging in. This procedure avoids these questions, and just gives
TRAMP a more-or-less `standard' login shell to work with.
Note that this procedure does not eliminate questions asked by
`ssh' itself. For example, `ssh' might ask "Are you sure you want
to continue connecting?" if the host key of the remote host is not
known. TRAMP does not know how to deal with such a question
(yet), therefore you will need to make sure that you can log in
without such questions.
This is also useful for Windows users where `ssh', when invoked
from an Emacs buffer, tells them that it is not allocating a
pseudo tty. When this happens, the login shell is wont to not
print any shell prompt, which confuses TRAMP mightily. For reasons
unknown, some Windows ports for `ssh' (maybe the Cygwin one)
require the doubled `-t' option.
This supports the `-p' kludge.
`krlogin'
This method is also similar to `ssh'. It only uses the `krlogin
-x' command to log in to the remote host.
`plink'
This method is mostly interesting for Windows users using the PuTTY
implementation of SSH. It uses `plink -ssh' to log in to the
remote host.
Additionally, the method `plink1' is provided, which calls `plink
-1 -ssh' in order to use SSH protocol version 1 explicitely.
CCC: Do we have to connect to the remote host once from the command
line to accept the SSH key? Maybe this can be made automatic?
CCC: Does `plink' support the `-p' option? TRAMP will support
that, anyway.