The aim of this article is to provide an introduction to some useful programs in the
SSH2 suite, i.e. sftp and scp. In the following we suppose that the SSH2 daemon is well configured and running. You may check this on RedHat Linux:
$ rpm -q openssh
openssh-3.1p1-6
The first one (Secure File Transfer) is a ftp-like client that can be used in
file transfer over the network. It does not use the FTP daemon (ftpd or
wu-ftpd) for connections, allowing a significant improvement in the system
security. The use of sftp prevents all hacker
attacks since it permits to stop the potentially dangerous
wu-ftpd.
The second (Secure Copy) is used to copy files over the network securely. It
is a replacement for rcp insecure command.
Sftp and scp do not require any dedicated daemon since the two programs
connect to sshd servers. In order to use sftp and scp you have
to insert the following line in the configuration file /etc/ssh/sshd_config
(RedHat Linux).
Subsystem sftp
/usr/libexec/openssh/sftp-server
After this modification you must restart sshd. So you could
use sftp and scp only to connect to hosts where sshd is running.
Sftp uses SSH2 in data connections, so the file transport
is as secure as possible. There are two main advantages in using sftp instead
of ftp:
-
Password are never transferred in clear text, preventing any sniffer attack.
-
Data are encrypted during the transfer, making difficult to spy or modify the
connection.
The use of sftp is really simple. Let's suppose that you would connect via
sftp to your account zahn on host1. In
order to do that use the command:
$ sftp zahn@host1
Connecting to host1...
zahn@host1's password:
sftp>
When the sftp is ready to accept commands, it will display a prompt sftp>.
In the sftp manual page there are a complete list of the commands which the user can
use; among them there are:
Quits from the application.
Changes the current remote working directory.
Changes the current local working directory.
Lists the names of the files on the remote server. For directories, the contents of
the directory are listed. When the -R option is specified, the directory trees are
listed recursively. (By default, the subdirectories of the argument directories are
not visited). When the -l option is specified, permissions, owners, sizes and
modification times are also shown. When no arguments are given, it is assumed that
the contents of . are being listed. Currently the options -R and -l are mutually
incompatible.
Same as ls, but operates on the local files.
Transfers the specified files from the remote end to the local end. Directories are
recursively copied with their contents.
Transfers the specified files from the local end to the remote end. Directories are
recursively copied with their contents.
Tries to create (destroy) the directory specified in dir.
Sftp supports glob patterns (wildcards) given to commands
ls, lls, get, and put. The format is described in the man page sshregex.
Since sftp use encryption there is drawback: the connection is slower (about a factor
of 2-3 to my experience), but this point is of marginal interest considering the
great security benefits.
Scp (Secure Copy) is used to copy files over the network securely. It is probably the
simplest way to copy a file into a remote machine. Let's suppose you want to copy the
file filename contained in the directory local_dir to your account myname on the
directory remote_dir on host host1. Using scp you could enter from the command line:
$ scp local_dir/filename myname@host1:remote_dir
In such a way the file filename is copied with the same name. Wildcards can be used
(read more about those from sshregex man page). The command:
$ scp local_dir/* myname@host1:remote_dir
copies all files from directory local_dir into the directory remote_dir of host1.
The command:
$ scp myname@host1:remote_dir/filename .
copies the file filename from remote_dir on host1 to the local directory.
Scp supports many options and allows copies between two remote systems as in the
following example:
$ scp
myname@host1:rem_dir/fname myname@host2:another_dir
Obviously, using scp, you must know the exact directory tree of the remote machine,
so in practice sftp is often preferred.
|