Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Using scp - Remote Access

Introduction

Secure Copy Protocol (scp) is a command-line utility that allows you to securely copy files and directories between two locations. It leverages SSH (Secure Shell) for data transfer, providing the same level of security and authentication. This tutorial will guide you through the process of using scp for various file transfer scenarios.

Basic Syntax

The basic syntax of the scp command is as follows:

scp [options] [source] [destination]

Here, source refers to the file or directory you want to copy, and destination is the location where you want to copy it to. Both source and destination can be either local or remote paths.

Copying Files from Local to Remote

To copy a file from your local system to a remote server, use the following command:

scp localfile.txt username@remotehost:/remote/directory/

This command will copy localfile.txt from your current directory to /remote/directory/ on the remote server remotehost, using the specified username for SSH authentication.

Copying Files from Remote to Local

To copy a file from a remote server to your local system, use the following command:

scp username@remotehost:/remote/directory/remotefile.txt /local/directory/

This command will copy remotefile.txt from /remote/directory/ on the remote server remotehost to /local/directory/ on your local system.

Copying Directories

To copy an entire directory, use the -r (recursive) option:

scp -r localdir username@remotehost:/remote/directory/

This command will recursively copy the entire localdir directory to /remote/directory/ on the remote server.

Specifying a Port

If your remote server uses a custom SSH port, you can specify it using the -P option:

scp -P 2222 localfile.txt username@remotehost:/remote/directory/

This command specifies port 2222 for the SSH connection.

Using scp with SSH Keys

If you use SSH keys for authentication, scp will automatically use them. However, you can explicitly specify the private key file with the -i option:

scp -i /path/to/private_key localfile.txt username@remotehost:/remote/directory/

This command uses the specified private key for authentication.

Common Options

Here are some common options you can use with the scp command:

  • -v: Enable verbose mode, which will display the progress of the file transfer.
  • -C: Enable compression, which can speed up the transfer of large files.
  • -l limit: Limit the bandwidth used by scp, specified in Kbit/s.

Examples

Here are a few examples to illustrate the use of scp:

scp -P 2222 -i /path/to/private_key -v -C localfile.txt username@remotehost:/remote/directory/

This command uses a custom port, a specified private key, and enables verbose mode and compression.

scp -r /local/directory username@remotehost:/remote/directory/

This command recursively copies a local directory to a remote server.

Troubleshooting

If you encounter issues with scp, here are a few tips:

  • Ensure that SSH is properly configured and running on both the local and remote systems.
  • Check the file permissions and ownership to ensure that the user has the necessary access rights.
  • Use the -v option to enable verbose mode and get more detailed error messages.