Thursday, April 10, 2014

What is SFTP, and how do I use an SFTP client to transfer files?

On this page:

Overview

The SSH File Transfer Protocol (also known as Secure FTP and SFTP) is a computing network protocol for accessing and managing files on remote file systems. SFTP also allows file transfers between hosts, similar to the SCP protocol. Unlike standard File Transfer Protocol (FTP), SFTP encrypt commands and data both, preventing passwords and sensitive information from being transmitted in the clear over a network.
SFTP clients are programs that use SSH to access, manage, and transfer files. SFTP clients are functionally similar to FTP clients, but they use different protocols. Consequently, you cannot use standard FTP clients to connect to SFTP servers, nor can you use clients that support only SFTP to connect to FTP servers. Graphical clients are available for SFTP, or you can use it from the command line on a Unix or Mac OS X computer.

Graphical SFTP clients

Graphical SFTP clients simplify file transfers by allowing you to drag and drop icons from one window to another. Each icon represents a file or directory, and each window represents a computer's file system. When you open the program, you specify the name of the remote host to which you want to connect, and then authenticate with your username and password for that host.

Command-line SFTP

You can use SFTP from the command line on Unix and Mac OS X computers. To start an SFTP session, at the command prompt, enter:
sftp username@host
For example, if your username is dvader, to connect to your account on the host empire.gov, enter:
sftp dvader@empire.gov
Enter your password when prompted.
Some standard command-line SFTP commands include:
CommandFunction
cdChange the directory on the remote computer.
chmodChange the permissions of files on the remote computer.
chownChange the owner of files on the remote computer.
exit (or quit)Close the connection to the remote computer and exit SFTP.
getCopy a file from the remote computer to the local computer.
help (or ?)Get help on the use of SFTP commands.
lcdChange the directory on the local computer.
llsList the contents of the current directory on the local computer.
lmkdirCreate a directory on the local computer.
ln (or symlink)Create a symbolic link for a file on the remote computer.
lpwdShow the current directory (present working directory) on the local computer.
ls (or dir)List the contents of the current directory on the remote computer.
lumaskChange the local umask value.
mkdirCreate a directory on the remote computer.
putCopy a file from the local computer to the remote computer.
pwdShow the current directory (present working directory) on the remote computer.
renameRename a file on the remote computer.
rmDelete a file on the remote computer.
rmdirRemove a directory on the remote computer (the directory usually has to be empty).
versionDisplay the SFTP version.
 ! Exit to the Unix shell prompt, where you can enter commands. To get back to SFTP, enter exit. If you combine  ! with a command (e.g., !pwd), SFTP will execute the command without dropping you to the Unix prompt.



How to use FTP from a command line?

Note: FTP is not an encrypted transmission, which means any data sent over it, including your username and password could be read by anyone who may intercept your transmission. If you're wanting a more secure transmission we suggest usingSFTP.
Connect using FTP
To connect to another computer using FTP at the MS-DOS prompt, command line, or Linux shell type FTP and press enter. Once in FTP> Type:
open ftp.example.com
In the above example, you'd substitute example.com for the name of your domain you're wanting to connect to. In addition to the domain name the IP address of the computer you're trying to connected to can also be typed in, for example, open 192.168.1.12.
Once connected you will be asked for a username and password. If these are entered properly you'll be successfully connected to the server where you can browse the files, send files, or receive files depending on your rights. Some servers may also allow anonymous logins you can connect to these computers using guest or e-mail address.

Send and receive a file in FTP

To get files from the server onto your own computer use the get command as shown in the example below. In this example you'd get the file myfile.htm.
Tip: If you want to get more than one file use mget and wildcards, for example, if you wanted to get all files that end with .htm you could type mget *.htm. Finally, if you do not want to be prompted as each file is being sent make sure to type prompt to disable prompting.
get myfile.htm
To send a file from your computer to the computer you are connected to assuming you have the rights use the send command as shown in the example below. In this example we're sending the myfile.htm to the directory we're currently in.
send myfile.htm
It is important to realize that the files being sent must be in your local working directory. In other words the directory you were in when you typed the FTP command. If you want to change to the directory that contains your files use the lcd command. For example, on Windows you'd type lcd c:\windows to set the local directory to the Windows directory.

FTP Commands

Depending upon the version of FTP and the operating system being used, each of the below commands may or may not work. Typing -help or a ? will list the commands available to you. Below is a general description of FTP commands available in the Windows command line FTP command.
CommandInformation
!This command toggles back and forth between the operating system and ftp. Once back in the operating system, typing exit takes you back to the FTP command line.
?Access the Help screen.
appendAppend text to a local file.
asciiSwitch to ASCII transfer mode
bellTurns bell mode on or off.
binarySwitches to binary transfer mode.
byeExits from FTP.
cdChanges directory.
closeExits from FTP.
deleteDeletes a file.
debugSets debugging on or off.
dirLists files if connected.

dir -C = Will list the files in wide format.
dir -1 = Lists the files in bare format in alphabetic order
dir -r = Lists directory in reverse alphabetic order.
dir -R = Lists all files in current directory and sub directories.
dir -S = Lists files in bare format in alphabetic order.
disconnectExits from FTP.
getGet file from the computer connected to.
globSets globbing on or off. When turned off the file name in the put and get commands is taken literally and wildcards will not be looked at.
hashSets hash mark printing on or off. When turned on for each 1024 bytes of data received a hash-mark (#) is displayed.
helpAccess the Help screen and displays information about command if command typed after help.
lcdDisplays local directory if typed alone or if path typed after lcd will change local directory.
literalSends a literal command to the connected computer with an expected one line response.
lsLists files of the remotely connected computer.
mdeleteMultiple delete.
mdirLists contents of multiple remote directories.
mgetGet multiple files.
mkdirMake directory.
mlsLists contents of multiple remote directories.
mputSent multiple files
openOpens address.
promptEnables or disables the prompt.
putSend one file
pwdPrint working directory
quitExits from FTP.
quoteSame as the literal command.
recvReceive file.
remotehelpGet help from remote server.
renameRenames a file.
rmdirRemoves a directory on the remote computer.
sendSend single file.
statusShows status of currently enabled and disabled options
traceToggles packet tracing.
TypeSet file transfer type.
userSend new user information.
verboseSets verbose on or off.