Secure File Transfer Protocol (sftp) is a file transfer program which runs over an ssh tunnel and uses many features of ssh, including compression and encryption. Essentially, sftp is a drop-in replacement for the standard command-line ftp client, but with ssh authentication.
Starting sftp
The command for starting sftp is as follows:
ComputerName:~# sftp user@sftp.cae.wisc.edu
Where user is your username to login to the Remote Machine.
The first time you connect to sftp.cae.wisc.edu, sftp will report that "The authenticity of the host 'sftp.cae.wisc.edu' can't be established." This means that sftp doesn't have sftp.cae.wisc.edu in its database of known hosts. Answer yes at the prompt to connect to the server.
Next, sftp will add sftp.cae.wisc.edu to its list of known hosts, and ask for your CAE account password. Enter your password, and sftp will log in and present you with the sftp prompt, which should look like this:
sftp>
By default sftp will change the working directory to your CAE Unix home directory
Using sftp
Many commands sftp uses are similar to the Unix shell commands for navigating files and directories, with a few small changes. The most notable difference is that you are working with two computers so there is usually a "local" and "remote" version of each command (prefixed by an "l" to designate a local command). The following commands work just like their Unix counterparts:
cd - change directory on the ftp server to
lcd - change directory on your machine to
ls - list files in the current directory on the ftp server
lls - list files in the current directory on your machine
pwd - print the current directory on the ftp server
lpwd - print the current directory on your machine.
exit - exit from the sftp program.
Getting Files
The get command in sftp allows you to download files from the sftp server.
Usage: get
Where ; is the file on the server you want to download, and is the path you want to put the file on your machine. If you omit the argument, the file is put in the current directory on your machine (see the pwd command).
For example, to download a file named "foo.bar", the following command would be used:
sftp>get foo.bar
To download this file and save it as "readme.txt", the following command would be used:
sftp>get foo.bar readme.txt
Getting Multiple Files
To download more than one file from the sftp server use the mget command.
Usage: mget
mget works by expanding each filename listed and running a get command on each file. The files are copied into the local working directory, which can be changed with the lcd command.
For example, to download all the files in the remote working directory, the following command would be used:
sftp> mget ./*
To download all of the files ending with .txt the following command would be used:
sftp> mget ./*.txt
Accessing Windows Files
When you first connect with sftp, the remote working directory will automatically be set to your Unix home directory on the CAE network. If you want to access your windows files, you will need to change to a different directory. This can be accomplished with a simple cd command. To find where your windows files are located, go to https://www.cae.wisc.edu/cae-auth/winaccess.php. The listing under SFTP client is the directory where you can access your windows files from within sftp.
Recursive Copy
If you try to copy a folder using the get or mget commands, sftp will complain that it "Cannot download non-regular file: filename". This is because the basic sftp client doesn't allow for a recursive copy. However, the program scp will allow you to do this. The scp command will not allow you to see what's on the sftp server, so the files need to be located using the sftp client.
Note: the scp command is a Unix command, and needs to be run from the Unix prompt. NOT within the SFTP client.
Usage: scp user@host:remote-path local-path
scp is like the Unix command cp and should work similarly. To copy a file from your Unix home directory and put it in the working directory, use the following command:
scp @sftp.cae.wisc.edu:~/ ./
Where is your CAE username, and is the file you wish to copy. Enter your password when scp asks for it. scp works just like a get command in sftp.
To recursively copy files or directories from your CAE account, use the -r switch.
For example, to copy the entire directory "tutorial" from my CAE Unix home directory to the home directory on your machine, the following command would be used: