In this article sftp, an alternative to scp will be explained. As said in our SCP’s article, both scp and sftp work through the ssh protocol in contrast to FTPS (MS Windows) encrypted through SSL. The ssh protocol is encrypted and the information traveling from a device to another through it is safe in contrast to protocols like telnet or ftp which are unencrypted allowing sniffers to interfere the data as shown previously when we explained how to sniff images being transferred within an unencrypted network or protocol.
Transfer files with FTP, FTPS, SFTP and Cloud Services (Including SSH Terminal). Introduction to SFTP client usage from the command line is shown in this tutorial. While scp only allow us to transfer files from a device to other with sftp we can edit file attributes on the remote device, create and remove directories, to stop and to resume the transference, to browse remote directories and to use it through graphical and friendly interfaces, of course to share files with.
While scp only allow us to transfer files from a device to other with sftp we can edit file attributes on the remote device, create and remove directories, to stop and to resume the transference, to browse remote directories and to use it through graphical and friendly interfaces, of course to share files with other users a SFTP server would be advantageous over scp.
Getting started with sftp
SFTP’s syntax is very similar to FTP. In contrast to SCP we first need to connect to the server to give instructions. To connect to a server without specifying any parameters on the console type:
Where:
sftp = calls the program <username> = replace it for your username (e.g root)
Pastebot 2 360. @<host/ipaddress> = replace it for your server ip or host.
Note: replace the instructions between < > for the proper information and type the password when asked.
As you can see in the screenshot sequence, after running “ls” I found no available files or directories within the server. Therefore, let’s upload a file from the local device to the server, type:
Where:
put = instructs to upload a file from the local computer to the server.
</path/to/file> = specify the file and it’s location on the local device.
If we want to download a file, type:
The file will be downloaded to our local directory unless we specify a different one. To know what is our local directory from sftp type:
To check the current directory on the server type:
We are on the home directory for the user shared on the local device and on the home directory for the user linuxhint on the remote device.
To download a file specifying a different location for it to be saved type:
As you see files now were transferred to the directory Downloads.
Sftp also allow us to transfer directories recursively (including it’s subdirectories), to transfer a directory recursively we only need to specify the parameter -r, if there is not an available directory on your server create it typing “mkdir testdirectory” , then, to download the directory type:
As you can see in the screenshot, we downloaded the directory called testdirectory to our local directory called Downloads within shared home. If we don’t specify a local location for the directory or file we download it will be saved on the local directory (the one you check with lpwd) like in the next example:
We can also save files and directories with a different name than the original, type:
We can also upload directories from our local device using put, let’s upload the directory testdirectory2, a copy of the source with a different name by typing:
mkdir<nameOfDirectoryToUpload> put <<nameOfDirectoryToUpload>>
Those are the basic commands to use sftp, by running “man sftp” you can see all available options and parameters. You can also type <help> once logged into a server.
I hope you found this tutorial useful to start using sftp from the command line. Keep following LinuxHint for additional tips and updates on Linux.
sftp is an interactive file transfer program, similar to ftp(1), which performs all operations over an encrypted ssh(1) transport. It may also usemany features of ssh, such as public key authentication and compression. sftp connects and logs into the specified host, then enters aninteractive command mode.
The second usage format will retrieve files automatically if a non-interactive authentication method is used; otherwise it will do so after successfulinteractive authentication.
The third usage format allows sftp to start in a remote directory.
The final usage format allows for automated sessions using the -b option. In such cases, it is necessary to configure non-interactive authenticationto obviate the need to enter a password at connection time (see sshd(8) and ssh-keygen(1) for details). The options are as follows:
-Bbuffer_size Specify the size of the buffer that sftp uses when transferring files. Larger buffers require fewer round trips at the cost of higher memoryconsumption. The default is 32768 bytes.
-bbatchfile Batch mode reads a series of commands from an input batchfile instead of stdin. Since it lacks user interaction it should be used in conjunctionwith non-interactive authentication. A batchfile of '-' may be used to indicate standard input. sftp will abort if any of the following commandsfail: get, put, rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown,chgrp, lpwd, df, and lmkdir. Termination on error can be suppressed on a command by command basis by prefixing the command with a'-' character (for example, -rm /tmp/blah*).
-C' Enables compression (via ssh's -C flag).
-Fssh_config Specifies an alternative per-user configuration file for ssh(1). This option is directly passed to ssh(1).
-ossh_option Can be used to pass options to ssh in the format used in ssh_config(5). This is useful for specifying options for which there is no separate sftpcommand-line flag. For example, to specify an alternate port use: sftp -oPort=24. For full details of the options listed below, and their possiblevalues, see ssh_config(5).
-Psftp_server_path Connect directly to a local sftp server (rather than via ssh(1)). This option may be useful in debugging the client and server.
-Rnum_requests Specify how many requests may be outstanding at any one time. Increasing this may slightly improve file transfer speed but will increase memory usage. Thedefault is 64 outstanding requests.
-Sprogram Name of the program to use for the encrypted connection. The program must understand ssh(1) options.
-ssubsystem | sftp_server Specifies the SSH2 subsystem or the path for an sftp server on the remote host. A path is useful for using sftp over protocol version 1, or when theremote sshd(8) does not have an sftp subsystem configured.
-v' Raise logging level. This option is also passed to ssh.
Interactive Commands
Once in interactive mode, sftp understands a set of commands similar to those of ftp(1). Commands are case insensitive. Pathnames that contain spacesmust be enclosed in quotes. Any special characters contained within pathnames that are recognized by glob(3) must be escaped with backslashes (').
cdpath Change remote directory to path.
chgrpgrp path Change group of file path to grp. path may contain glob(3) characters and may match multiple files. grp must be a numeric GID.
chmodmode path Change permissions of file path to mode. path may contain glob(3) characters and may match multiple files.
chownown path Change owner of file path to own. path may contain glob(3) characters and may match multiple files. own must be a numeric UID.
df [-hi] [path] Display usage information for the filesystem holding the current directory (or path if specified). If the -h flag is specified, the capacityinformation will be displayed using 'human-readable' suffixes. The -i flag requests display of inode information in addition to capacity information.This command is only supported on servers that implement the '[email protected]' extension.
exit' Quit sftp.
get [-P] remote-path [local-path] Retrieve the remote-path and store it on the local machine. If the local path name is not specified, it is given the same name it has on the remotemachine. remote-path may contain glob(3) characters and may match multiple files. If it does and local-path is specified, then local-pathmust specify a directory. If the -P flag is specified, then full file permissions and access times are copied too.
help' Display help text.
lcdpath Change local directory to path.
Linux Sftp Client
lls [ls-options [path]] Display local directory listing of either path or current directory if path is not specified. ls-options may contain any flags supportedby the local system's ls(1) command. path may contain glob(3) characters and may match multiple files.
lmkdirpath Create local directory specified by path.
lnoldpath newpath Create a symbolic link from oldpath to newpath.
lpwd' Print local working directory.
ls [-1aflnrSt] [path] Display a remote directory listing of either path or the current directory if path is not specified. path may contain glob(3) charactersand may match multiple files.
The following flags are recognized and alter the behaviour of ls accordingly:
-1' Produce single columnar output.
-a' List files beginning with a dot ('.').
-f' Do not sort the listing. Jixipix snow daze 1 265. The default sort order is lexicographical.
-l' Display additional details including permissions and ownership information.
-n' Produce a long listing with user and group information presented numerically.
-r' Reverse the sort order of the listing.
-S' Sort the listing by file size.
-t' Sort the listing by last modification time.
lumaskumask Set local umask to umask.
mkdirpath Create remote directory specified by path.
progress Toggle display of progress meter.
put [-P] local-path [remote-path] Upload local-path and store it on the remote machine. If the remote path name is not specified, it is given the same name it has on the local machine.local-path may contain glob(3) characters and may match multiple files. If it does and remote-path is specified, then remote-path mustspecify a directory. If the -P flag is specified, then the file's full permission and access time are copied too.
pwd' Display remote working directory.
quit' Quit sftp.
renameoldpath newpath Rename remote file from oldpath to newpath.
rmpath Delete remote file specified by path.
rmdirpath Remove remote directory specified by path.
symlinkoldpath newpath Create a symbolic link from oldpath to newpath.
version Display the sftp protocol version.
!command Execute command in local shell.
!' Escape to local shell.
?' Synonym for help.
IPV6
IPv6 address can be used everywhere where IPv4 address. In all entries must be the IPv6 address enclosed in square brackets. Note: The square brackets aremetacharacters for the shell and must be escaped in shell.