How To Transfer Files Between Servers Using SSH and SCP

How To Transfer Files Between Servers Using SSH and SCP

Transferring files between servers using SSH (Secure Shell) and scp (Secure Copy Protocol) is a secure and efficient method widely used in system administration and web development. This method encrypts the data transferred, ensuring security over the network. Below is a comprehensive guide on how to perform file transfers between two servers using SSH and scp.


  • SSH access to both the source and destination servers.
  • The IP address or hostname of the destination server.
  • A user account with sufficient permissions to read/write files on both servers.
  • OpenSSH installed on both servers (commonly pre-installed on most Unix-like systems).

Understanding scp Syntax

The basic syntax of the scp command is:

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
  • OPTION: scp options such as -p (preserves file modification and access times) or -r (recursively copy entire directories).
  • SRC_HOST, DEST_HOST: Hostnames or IP addresses of the source and destination servers. If omitted, scp assumes the files are on the local host.
  • user@: Specifies the username to log in as on the remote server. If omitted, scp uses the current user’s username.
  • file1, file2: The source and destination file paths. If a directory is specified, -r needs to be used for recursive copying.

Transferring Files from Local to Remote Server

To transfer a file from your local machine to a remote server, use the following command:

scp /path/to/local/file.txt user@remote_server:/path/to/remote/directory

This command will copy file.txt from the local machine to the specified directory on remote_server using the credentials of user.

Transferring Files from Remote to Local Server

To transfer a file from a remote server to your local machine, simply reverse the source and destination paths:

scp user@remote_server:/path/to/remote/file.txt /path/to/local/directory

This command will copy file.txt from the remote server to the specified local directory.

Transferring Files Between Two Remote Servers

You can also use scp to transfer files between two remote servers from your local machine:

scp user@source_server:/path/to/source/file.txt user@destination_server:/path/to/destination/directory

This command transfers file.txt from source_server to destination_server. Note that this process will route the data through the local machine, potentially impacting transfer speed.

Additional Options and Tips

  • Use the -r option to recursively copy directories:
    scp -r user@remote_server:/path/to/remote/directory /path/to/local/directory
  • To increase verbosity for troubleshooting, add the -v option.
  • If your SSH server uses a different port than the default (22), use the -P option to specify it:
    scp -P 2222 /path/to/local/file.txt user@remote_server:/path/to/remote/directory
  • For secure key-based authentication, ensure your SSH key is added to the ssh-agent and the public key is in the remote server’s ~/.ssh/authorized_keys file.

Are you planning to migrate a website from one server to another? There are several methods at your disposal. A common approach involves first downloading the site to your local machine and then uploading it to the new server. Alternatively, you might consider using third-party FTP tools to directly transfer files between the two servers. However, a more secure and efficient strategy that you may not have considered is the use of Secure Shell (SSH) for file transfers. This article delves into how SSH can serve as an optimal solution for your migration requirements.

What is SSH?

Secure Shell (SSH) is a protocol that ensures secure network services over an unsecured network by creating a protected channel. Unlike many third-party FTP tools that feature a graphical interface, SSH operates via the command line. This can be accessed through the Windows Command Prompt or the Terminal in Mac and Linux systems.

If you’re using a version of Windows older than Windows 10, you’ll need a third-party application like Putty to utilize SSH, as native support was only introduced with Windows 10. Visit https://www.putty.org/ to download Putty. For Mac and Linux users, SSH is readily available, making it a convenient tool, especially since most servers operate on Linux.

Understanding Secure Copy Protocol (SCP)

The SCP protocol leverages SSH to securely transfer files and folders between computers. It allows for the safe uploading of files to a remote server, downloading files, or even moving files between remote servers via SSH.

A Step-by-Step Guide to SSH File Transfer

Step One: Enable SSH on Your Servers

First, ensure that SSH is enabled on both of your remote servers. This can usually be done through the server’s web console or control panel. SSH might be disabled by default, so check the server’s documentation or reach out to the support service if you’re unsure how to enable it. Remember to note down the SSH username and secure shell connection information, as you’ll need these later.

Step Two: Connect to Your Remote Server Using PuTTY

With PuTTY installed, set up your connection to the remote server. If you encounter a security warning upon your first connection attempt, it’s a standard procedure to confirm the authenticity of the connection. However, receiving this warning on subsequent attempts may indicate a security concern such as a potential Man-In-The-Middle attack. Once you’re confident in the connection’s security, proceed to log in with your username and password. Remember, password entries won’t be displayed on the screen for security reasons.

Step Three: Execute Secure File Transfers with SCP

To transfer files between servers, use the SCP command in the following syntax: scp [option] [source] [destination]. The -r option, for example, allows for the recursive transfer of directories. It’s important to ensure no naming conflicts in the destination directory before initiating the transfer.

Here’s an example command to transfer a directory from one remote server to another:

scp -r user@example.com:/path/to/source user@destination.com:/path/to/destination

You’ll need to authenticate with the second server’s password, after which the transfer process will commence.


Using SSH for file transfers combines security with efficiency, streamlining the migration process while safeguarding data integrity. With the appropriate knowledge and tools, transferring files over SSH can significantly simplify your workflow. For further insights into securing your server operations with SSH keys, refer to our beginner’s guide on the subject. This added layer of authentication enhances your server’s security, making SSH an invaluable tool for your administrative toolkit.


Previous Post
How to Set up Gmail to Send/Receive Email for Your Domain
Next Post
What is great WordPress hosting