Copying files from local clients to remote servers is a task required of all types of analysts. Certain graphical tools, such as WinSCP, can aid those who prefer graphical utilities to command line equivalents. But often times, the command line solution is quicker, more elegant, and has the advantage that any collection of commands can be placed in a shell script and run on-demand.
In this brief post, we’ll demonstrate how to copy files from a local Windows client to a remote Linux server. It is assumed that Cygwin is installed on the Windows client, and that it is possible to connect to the remote Linux server from the terminal via ssh.

Command Syntax

The command line specification for scp is:

$ scp [-P <port>] <local_file> <remote_username>@<remote_hostname>:<remote_directory_location>

Lets assume we’ll be connecting as uid414 to using ssh via port 3337, and we want to the local file to the remote file system location /home/uid414. The corresponding scp command would be:

$ scp -P 3337

One thing to note: If your current working directory isn’t where is saved, be sure to include the /cygdrive prefix when specifying the path to the file. For example, if is located in U:/Archive, and your current working directory is some other location, from Cygwin the command should be:

$ scp -P 3337 /cygdrive/u/Archive/

Also, if any directory names in filepath have spaces, surround the filename in double quotes. If is instead saved to U:/Local Archive, the corresponding scp command would be:

$ scp -P 3337 "/cygdrive/u/Local Archive/"

Note that going the other way, copying files from a remote host to the localhost, is only possible if an ssh server is installed on the local client, and Windows does not come with an in-built ssh server.