This is an old revision of the document!
Table of Contents
How to transfer files between Linux/Mac computers using SFTP from the Command Line
This information is provided for the Ubuntu/Debian editions of Linux used in the CS Department. Other Linux versions may vary.
What Is SFTP?
In Linux, you can use the Secure File Transfer Protocol (SSH File Transfer Protocol) (SCP) from the command line (CLI) (the sftp command) to securely copy files and directories between remote hosts.
In most cases, SFTP is preferable to FTP because of its underlying security features and ability to piggy-back on an SSH connection. FTP is an insecure protocol that should only be used in limited cases or on trusted networks. FTP is NOT available on CS Department computers.
How to Connect with SFTP
You can establish a SFTP connection by issuing the following command:
sftp [options] remote_username@remote_host
You will connect the the remote system and your prompt will change to an SFTP prompt.
- Name of the account on the host computer (remote_username)
- Hostname (i.e. FQDN) of the computer on which the source file resides (remote_host)
Options can include things like [-oPort=custom_port] if not connecting to the standard SSH port 22.
Navigating with SFTP
Once connected to the remote host, you can navigate around the remote file system with commands similar to the Unix/Linux Shell.
- pwd: show remote working directory.
- ls: view contents of the current remote directory.
- cd: change remote directory.
You can direct commands towards the local file system by preceding them with an “l” for local.
- lpwd: show local working directory.
- lls: view contents of the current local directory.
- lcd: change local directory.
Transferring Remote Files to the Local System
To download a file from the remote host.
get remote_filename
To download a file from the remote host and rename.
get remote_filename new_local_filename
To download a directory and it's contents.
get -r remote_directory
To preserve full file permissions and access times during the copy, use the -p flag.
get -p remote_filename