2017-01-31 21:34:11 +01:00
---
title: "SFTP"
description: "SFTP"
date: "2017-02-01"
---
< i class = "fa fa-server" > < / i > SFTP
----------------------------------------
SFTP is the [Secure (or SSH) File Transfer
Protocol](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol).
2019-08-08 08:57:51 +02:00
The SFTP backend can be used with a number of different providers:
* {{< provider name = "C14" home = "https://www.online.net/en/storage/c14-cold-storage" config = "/sftp/#c14" > }}
2019-08-08 09:03:02 +02:00
* {{< provider name = "rsync.net" home = "https://rsync.net/products/rclone.html" config = "/sftp/#rsync-net" > }}
2018-04-19 11:15:54 +02:00
SFTP runs over SSH v2 and is installed as standard with most modern
SSH installations.
2017-01-31 21:34:11 +01:00
Paths are specified as `remote:path` . If the path does not begin with
a `/` it is relative to the home directory of the user. An empty path
2017-10-16 03:27:59 +02:00
`remote:` refers to the user's home directory.
2017-01-31 21:34:11 +01:00
2019-06-14 15:20:38 +02:00
"Note that some SFTP servers will need the leading / - Synology is a
good example of this. rsync.net, on the other hand, requires users to
OMIT the leading /.
2018-04-19 11:15:54 +02:00
2017-10-16 03:27:59 +02:00
Here is an example of making an SFTP configuration. First run
2017-01-31 21:34:11 +01:00
rclone config
2017-06-23 17:25:35 +02:00
This will guide you through an interactive setup process.
2017-01-31 21:34:11 +01:00
```
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
2017-06-23 17:25:35 +02:00
n/s/q> n
2017-01-31 21:34:11 +01:00
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Amazon Drive
\ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
\ "s3"
3 / Backblaze B2
\ "b2"
4 / Dropbox
\ "dropbox"
5 / Encrypt/Decrypt a remote
\ "crypt"
2017-05-25 00:24:46 +02:00
6 / FTP Connection
\ "ftp"
7 / Google Cloud Storage (this is not Google Drive)
2017-01-31 21:34:11 +01:00
\ "google cloud storage"
2017-05-25 00:24:46 +02:00
8 / Google Drive
2017-01-31 21:34:11 +01:00
\ "drive"
2017-05-25 00:24:46 +02:00
9 / Hubic
2017-01-31 21:34:11 +01:00
\ "hubic"
2017-05-25 00:24:46 +02:00
10 / Local Disk
2017-01-31 21:34:11 +01:00
\ "local"
2017-05-25 00:24:46 +02:00
11 / Microsoft OneDrive
2017-01-31 21:34:11 +01:00
\ "onedrive"
2017-05-25 00:24:46 +02:00
12 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
2017-01-31 21:34:11 +01:00
\ "swift"
2017-05-25 00:24:46 +02:00
13 / SSH/SFTP Connection
2017-01-31 21:34:11 +01:00
\ "sftp"
2017-05-25 00:24:46 +02:00
14 / Yandex Disk
2017-01-31 21:34:11 +01:00
\ "yandex"
2017-06-23 17:25:35 +02:00
15 / http Connection
\ "http"
2017-05-25 00:24:46 +02:00
Storage> sftp
2017-01-31 21:34:11 +01:00
SSH host to connect to
Choose a number from below, or type in your own value
1 / Connect to example.com
\ "example.com"
host> example.com
SSH username, leave blank for current username, ncw
2017-06-23 17:25:35 +02:00
user> sftpuser
2017-05-25 00:24:46 +02:00
SSH port, leave blank to use default (22)
2019-07-10 14:23:02 +02:00
port>
2017-06-23 17:25:35 +02:00
SSH password, leave blank to use ssh-agent.
2017-01-31 21:34:11 +01:00
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> n
2017-06-23 17:25:35 +02:00
Path to unencrypted PEM-encoded private key file, leave blank to use ssh-agent.
2019-07-10 14:23:02 +02:00
key_file>
2017-01-31 21:34:11 +01:00
Remote config
--------------------
[remote]
host = example.com
2017-06-23 17:25:35 +02:00
user = sftpuser
2019-07-10 14:23:02 +02:00
port =
pass =
key_file =
2017-01-31 21:34:11 +01:00
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
```
2017-10-16 03:27:59 +02:00
This remote is called `remote` and can now be used like this:
2017-01-31 21:34:11 +01:00
See all directories in the home directory
rclone lsd remote:
Make a new directory
rclone mkdir remote:path/to/directory
List the contents of a directory
rclone ls remote:path/to/directory
Sync `/home/local/directory` to the remote directory, deleting any
excess files in the directory.
rclone sync /home/local/directory remote:directory
2017-06-23 17:25:35 +02:00
### SSH Authentication ###
2017-10-16 03:27:59 +02:00
The SFTP remote supports three authentication methods:
2017-06-23 17:25:35 +02:00
* Password
* Key file
* ssh-agent
2019-01-03 12:25:13 +01:00
Key files should be PEM-encoded private key files. For instance `/home/$USER/.ssh/id_rsa` .
Only unencrypted OpenSSH or PEM encrypted files are supported.
2017-06-23 17:25:35 +02:00
2019-01-03 12:25:13 +01:00
If you don't specify `pass` or `key_file` then rclone will attempt to contact an ssh-agent.
You can also specify `key_use_agent` to force the usage of an ssh-agent. In this case
`key_file` can also be specified to force the usage of a specific key in the ssh-agent.
Using an ssh-agent is the only way to load encrypted OpenSSH keys at the moment.
2017-06-23 17:25:35 +02:00
2018-03-15 00:17:09 +01:00
If you set the `--sftp-ask-password` option, rclone will prompt for a
password when needed and no password has been configured.
2017-06-23 17:25:35 +02:00
### ssh-agent on macOS ###
Note that there seem to be various problems with using an ssh-agent on
macOS due to recent changes in the OS. The most effective work-around
seems to be to start an ssh-agent in each session, eg
eval `ssh-agent -s` && ssh-add -A
And then at the end of the session
eval `ssh-agent -k`
These commands can be used in scripts of course.
2017-01-31 21:34:11 +01:00
### Modified time ###
Modified times are stored on the server to 1 second precision.
Modified times are used in syncing and are fully supported.
2018-01-04 15:52:47 +01:00
Some SFTP servers disable setting/modifying the file modification time after
upload (for example, certain configurations of ProFTPd with mod_sftp). If you
are using one of these servers, you can set the option `set_modtime = false` in
your RClone backend configuration to disable this behaviour.
2018-10-01 21:48:54 +02:00
<!-- - autogenerated options start - DO NOT EDIT, instead edit fs.RegInfo in backend/sftp/sftp.go then run make backenddocs -->
### Standard Options
Here are the standard options specific to sftp (SSH/SFTP Connection).
#### --sftp-host
SSH host to connect to
- Config: host
- Env Var: RCLONE_SFTP_HOST
- Type: string
- Default: ""
- Examples:
- "example.com"
- Connect to example.com
#### --sftp-user
SSH username, leave blank for current username, ncw
- Config: user
- Env Var: RCLONE_SFTP_USER
- Type: string
- Default: ""
#### --sftp-port
SSH port, leave blank to use default (22)
- Config: port
- Env Var: RCLONE_SFTP_PORT
- Type: string
- Default: ""
#### --sftp-pass
SSH password, leave blank to use ssh-agent.
- Config: pass
- Env Var: RCLONE_SFTP_PASS
- Type: string
- Default: ""
#### --sftp-key-file
2019-01-03 12:25:13 +01:00
Path to PEM-encoded private key file, leave blank or set key-use-agent to use ssh-agent.
2018-10-01 21:48:54 +02:00
- Config: key_file
- Env Var: RCLONE_SFTP_KEY_FILE
- Type: string
- Default: ""
2019-01-03 12:24:31 +01:00
#### --sftp-key-file-pass
The passphrase to decrypt the PEM-encoded private key file.
Only PEM encrypted key files (old OpenSSH format) are supported. Encrypted keys
in the new OpenSSH format can't be used.
- Config: key_file_pass
- Env Var: RCLONE_SFTP_KEY_FILE_PASS
- Type: string
- Default: ""
2019-01-03 12:25:13 +01:00
#### --sftp-key-use-agent
When set forces the usage of the ssh-agent.
When key-file is also set, the ".pub" file of the specified key-file is read and only the associated key is
requested from the ssh-agent. This allows to avoid `Too many authentication failures for *username*` errors
when the ssh-agent contains many keys.
- Config: key_use_agent
- Env Var: RCLONE_SFTP_KEY_USE_AGENT
- Type: bool
- Default: false
2018-10-01 21:48:54 +02:00
#### --sftp-use-insecure-cipher
2019-07-10 14:23:02 +02:00
Enable the use of the aes128-cbc cipher and diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1 key exchange. Those algorithms are insecure and may allow plaintext data to be recovered by an attacker.
2018-10-01 21:48:54 +02:00
- Config: use_insecure_cipher
- Env Var: RCLONE_SFTP_USE_INSECURE_CIPHER
- Type: bool
- Default: false
- Examples:
- "false"
- Use default Cipher list.
- "true"
2019-07-10 14:23:02 +02:00
- Enables the use of the aes128-cbc cipher and diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1 key exchange.
2018-10-01 21:48:54 +02:00
#### --sftp-disable-hashcheck
Disable the execution of SSH commands to determine if remote file hashing is available.
Leave blank or set to false to enable hashing (recommended), set to true to disable hashing.
- Config: disable_hashcheck
- Env Var: RCLONE_SFTP_DISABLE_HASHCHECK
- Type: bool
- Default: false
### Advanced Options
Here are the advanced options specific to sftp (SSH/SFTP Connection).
#### --sftp-ask-password
Allow asking for SFTP password when needed.
- Config: ask_password
- Env Var: RCLONE_SFTP_ASK_PASSWORD
- Type: bool
- Default: false
#### --sftp-path-override
Override path used by SSH connection.
This allows checksum calculation when SFTP and SSH paths are
different. This issue affects among others Synology NAS boxes.
Shared folders can be found in directories representing volumes
rclone sync /home/local/directory remote:/directory --ssh-path-override /volume2/directory
Home directory can be found in a shared folder called "home"
rclone sync /home/local/directory remote:/home/directory --ssh-path-override /volume1/homes/USER/directory
- Config: path_override
- Env Var: RCLONE_SFTP_PATH_OVERRIDE
- Type: string
- Default: ""
#### --sftp-set-modtime
Set the modified time on the remote if set.
- Config: set_modtime
- Env Var: RCLONE_SFTP_SET_MODTIME
- Type: bool
- Default: true
<!-- - autogenerated options stop -->
2018-10-01 19:36:15 +02:00
2017-01-31 21:34:11 +01:00
### Limitations ###
2017-08-06 12:49:52 +02:00
SFTP supports checksums if the same login has shell access and `md5sum`
or `sha1sum` as well as `echo` are in the remote's PATH.
2018-04-20 21:49:49 +02:00
This remote checksumming (file hashing) is recommended and enabled by default.
Disabling the checksumming may be required if you are connecting to SFTP servers
2018-01-05 10:01:35 +01:00
which are not under your control, and to which the execution of remote commands
2018-04-20 21:49:49 +02:00
is prohibited. Set the configuration option `disable_hashcheck` to `true` to
disable checksumming.
2017-01-31 21:34:11 +01:00
2019-05-14 15:09:20 +02:00
SFTP also supports `about` if the same login has shell
access and `df` are in the remote's PATH. `about` will
return the total space, free space, and used space on the remote
for the disk of the specified path on the remote or, if not set,
the disk of the root on the remote.
`about` will fail if it does not have shell
2019-07-10 14:23:02 +02:00
access or if `df` is not in the remote's PATH.
2019-05-14 15:09:20 +02:00
2018-04-19 11:15:54 +02:00
Note that some SFTP servers (eg Synology) the paths are different for
SSH and SFTP so the hashes can't be calculated properly. For them
using `disable_hashcheck` is a good idea.
2017-10-28 08:03:51 +02:00
The only ssh agent supported under Windows is Putty's pageant.
2017-04-10 15:50:06 +02:00
2017-12-08 13:22:09 +01:00
The Go SSH library disables the use of the aes128-cbc cipher by
default, due to security concerns. This can be re-enabled on a
per-connection basis by setting the `use_insecure_cipher` setting in
the configuration file to `true` . Further details on the insecurity of
this cipher can be found [in this paper]
(http://www.isg.rhul.ac.uk/~kp/SandPfinal.pdf).
2017-01-31 21:34:11 +01:00
SFTP isn't supported under plan9 until [this
issue](https://github.com/pkg/sftp/issues/156) is fixed.
Note that since SFTP isn't HTTP based the following flags don't work
with it: `--dump-headers` , `--dump-bodies` , `--dump-auth`
Note that `--timeout` isn't supported (but `--contimeout` is).
2019-08-08 08:57:51 +02:00
## C14 {#c14}
C14 is supported through the SFTP backend.
See [C14's documentation ](https://www.online.net/en/storage/c14-cold-storage )
2019-08-08 09:03:02 +02:00
## rsync.net {#rsync-net}
rsync.net is supported through the SFTP backend.
See [rsync.net's documentation of rclone examples ](https://www.rsync.net/products/rclone.html ).