# man > scp(1)

> **TLDR:** Secure copy.
>
- Copy a local file to a remote host:
  `scp {{path/to/local_file}} {{remote_host}}:{{path/to/remote_file}}`
- Use a specific port when connecting to the remote host:
  `scp -P {{port}} {{path/to/local_file}} {{remote_host}}:{{path/to/remote_file}}`
- Copy a file from a remote host to a local directory:
  `scp {{remote_host}}:{{path/to/remote_file}} {{path/to/local_directory}}`
- Recursively copy the contents of a directory from a remote host to a local directory:
  `scp -r {{remote_host}}:{{path/to/remote_directory}} {{path/to/local_directory}}`
- Copy a file between two remote hosts transferring through the local host:
  `scp -3 {{host1}}:{{path/to/remote_file}} {{host2}}:{{path/to/remote_directory}}`
- Use a specific username when connecting to the remote host:
  `scp {{path/to/local_file}} {{remote_username}}@{{remote_host}}:{{path/to/remote_directory}}`
- Use a specific SSH private key for authentication with the remote host:
  `scp -i {{~/.ssh/private_key}} {{path/to/local_file}} {{remote_host}}:{{path/to/remote_file}}`
- Use a specific proxy when connecting to the remote host:
  `scp -J {{proxy_username}}@{{proxy_host}} {{path/to/local_file}} {{remote_host}}:{{path/to/remote_file}}`

*Source: tldr-pages*

---

[_SCP_(1)](https://www.chedong.com/phpMan.php/man/SCP/1/markdown)                                 General Commands Manual                                [_SCP_(1)](https://www.chedong.com/phpMan.php/man/SCP/1/markdown)

## NAME
       scp — OpenSSH secure file copy

## SYNOPSIS
       **scp  **[**-346ABCOpqRrsTv**]  [**-c  _**cipher_] [**-D _**sftp_server_path_] [**-F _**ssh_config_] [**-i _**identity_file_]
           [**-J _**destination_] [**-l _**limit_] [**-o _**ssh_option_]  [**-P  _**port_]  [**-S  _**program_]  [**-X  _**sftp_option_]
           _source_ _..._ _target_

## DESCRIPTION
       **scp **copies files between hosts on a network.

       **scp  **uses the SFTP protocol over a [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown) connection for data transfer, and uses the same au‐
       thentication and provides the same security as a login session.

       **scp **will ask for passwords or passphrases if they are needed for authentication.

       The _source_ and _target_ may be specified as a local pathname, a remote host with optional  path
       in  the form [user@]host:[path], or a URI in the form scp://[user@]host[:port][/path].  Local
       file names can be made explicit using absolute or relative pathnames to  avoid  **scp  **treating
       file names containing ‘:’ as host specifiers.

       When  copying between two remote hosts, if the URI format is used, a _port_ cannot be specified
       on the _target_ if the **-R **option is used.

       The options are as follows:

### -3      
               option the data is copied directly between the two remote hosts.  Note that, when us‐
               ing the legacy SCP protocol (via the **-O **flag), this option selects batch mode for the
               second host as **scp **cannot ask for passwords or passphrases for both hosts.  This mode
               is the default.

### -4      

### -6      

### -A      
               ward an authentication agent.

### -B      

### -C       -C 

### -c _
               Selects  the cipher to use for encrypting the data transfer.  This option is directly
               passed to [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown).

### -D _
               Connect directly to a local SFTP server program rather than a remote one via  [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown).
               This option may be useful in debugging the client and server.

### -F _
               Specifies  an  alternative  per-user  configuration file for **ssh**.  This option is di‐
               rectly passed to [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown).

### -i _
               Selects the file from which the identity (private key) for public key  authentication
               is read.  This option is directly passed to [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown).

### -J _
               Connect  to  the  target  host by first making an **scp **connection to the jump host de‐
               scribed by _destination_ and then establishing a TCP forwarding to the ultimate  desti‐
               nation  from  there.   Multiple jump hops may be specified separated by comma charac‐
               ters.  This is a shortcut to specify a **ProxyJump **configuration directive.   This  op‐
               tion is directly passed to [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown).

### -l _
               Limits the used bandwidth, specified in Kbit/s.

### -O      
               the  use of the SCP protocol may be necessary for servers that do not implement SFTP,
               for backwards-compatibility for particular filename wildcard patterns and for expand‐
               ing paths with a ‘~’ prefix for older SFTP servers.

### -o _
               Can be used to pass options to **ssh **in the format used in [_ssh_config_(5)](https://www.chedong.com/phpMan.php/man/sshconfig/5/markdown).  This is use‐
               ful for specifying options for which there is no separate **scp **command-line flag.  For
               full  details  of  the  options  listed  below,  and  their  possible   values,   see
               [_ssh_config_(5)](https://www.chedong.com/phpMan.php/man/sshconfig/5/markdown).

                     AddressFamily
                     BatchMode
                     BindAddress
                     BindInterface
                     CanonicalDomains
                     CanonicalizeFallbackLocal
                     CanonicalizeHostname
                     CanonicalizeMaxDots
                     CanonicalizePermittedCNAMEs
                     CASignatureAlgorithms
                     CertificateFile
                     CheckHostIP
                     Ciphers
                     Compression
                     ConnectionAttempts
                     ConnectTimeout
                     ControlMaster
                     ControlPath
                     ControlPersist
                     GlobalKnownHostsFile
                     GSSAPIAuthentication
                     GSSAPIDelegateCredentials
                     HashKnownHosts
                     Host
                     HostbasedAcceptedAlgorithms
                     HostbasedAuthentication
                     HostKeyAlgorithms
                     HostKeyAlias
                     Hostname
                     IdentitiesOnly
                     IdentityAgent
                     IdentityFile
                     IPQoS
                     KbdInteractiveAuthentication
                     KbdInteractiveDevices
                     KexAlgorithms
                     KnownHostsCommand
                     LogLevel
                     MACs
                     NoHostAuthenticationForLocalhost
                     NumberOfPasswordPrompts
                     PasswordAuthentication
                     PKCS11Provider
                     Port
                     PreferredAuthentications
                     ProxyCommand
                     ProxyJump
                     PubkeyAcceptedAlgorithms
                     PubkeyAuthentication
                     RekeyLimit
                     RequiredRSASize
                     SendEnv
                     ServerAliveInterval
                     ServerAliveCountMax
                     SetEnv
                     StrictHostKeyChecking
                     TCPKeepAlive
                     UpdateHostKeys
                     User
                     UserKnownHostsFile
                     VerifyHostKeyDNS

### -P _
               Specifies  the port to connect to on the remote host.  Note that this option is writ‐
               ten with a capital ‘P’, because **-p **is already reserved for preserving the  times  and
               mode bits of the file.

### -p      

### -q      
               from [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown).

### -R      
               executing **scp **there.  This requires that **scp **running on the origin host can authenti‐
               cate to the destination host without requiring a password.

### -r      
               tered in the tree traversal.

### -S _
               Name of _program_ to use for the encrypted connection.   The  program  must  understand
               [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown) options.

### -T      
               to a local directory **scp **checks that the received filenames match those requested  on
               the command-line to prevent the remote end from sending unexpected or unwanted files.
               Because of differences in how various operating systems and shells interpret filename
               wildcards,  these checks may cause wanted files to be rejected.  This option disables
               these checks at the expense of fully trusting that the server  will  not  send  unex‐
               pected filenames.

### -v      
               progress.  This is helpful in debugging connection, authentication, and configuration
               problems.

### -X _
               Specify an option that controls aspects of SFTP protocol behaviour.   The  valid  op‐
               tions are:

               **nrequests**=_value_
                       Controls  how  many concurrent SFTP read or write requests may be in progress
                       at any point in time during a download or upload.  By default 64 requests may
                       be active concurrently.

               **buffer**=_value_
                       Controls the maximum buffer size for a single SFTP read/write operation  used
                       during download or upload.  By default a 32KB buffer is used.

## EXIT STATUS
       The **scp **utility exits 0 on success, and >0 if an error occurs.

## SEE ALSO
       [_sftp_(1)](https://www.chedong.com/phpMan.php/man/sftp/1/markdown),  [_ssh_(1)](https://www.chedong.com/phpMan.php/man/ssh/1/markdown),  [_ssh-add_(1)](https://www.chedong.com/phpMan.php/man/ssh-add/1/markdown),  [_ssh-agent_(1)](https://www.chedong.com/phpMan.php/man/ssh-agent/1/markdown),  [_ssh-keygen_(1)](https://www.chedong.com/phpMan.php/man/ssh-keygen/1/markdown),  [_ssh_config_(5)](https://www.chedong.com/phpMan.php/man/sshconfig/5/markdown), [_sftp-server_(8)](https://www.chedong.com/phpMan.php/man/sftp-server/8/markdown),
       [_sshd_(8)](https://www.chedong.com/phpMan.php/man/sshd/8/markdown)

## HISTORY
       **scp **is based on the rcp program in BSD source code from the Regents of the University of Cal‐
       ifornia.

       Since OpenSSH 9.0, **scp **has used the SFTP protocol for transfers by default.

## AUTHORS
       Timo Rinne <<_tri@iki.fi_>>
       Tatu Ylonen <<_ylo@cs.hut.fi_>>

## CAVEATS
       The legacy SCP protocol (selected by the **-O **flag) requires execution  of  the  remote  user's
       shell  to  perform [_glob_(3)](https://www.chedong.com/phpMan.php/man/glob/3/markdown) pattern matching.  This requires careful quoting of any characters
       that have special meaning to the remote shell, such as quote characters.

Debian                                    December 16, 2022                                   [_SCP_(1)](https://www.chedong.com/phpMan.php/man/SCP/1/markdown)
