2017-01-31 20:34:11 +00: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).
|
|
|
|
|
|
|
|
It runs over SSH v2 and is standard with most modern SSH
|
|
|
|
installations.
|
|
|
|
|
|
|
|
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 01:27:59 +00:00
|
|
|
`remote:` refers to the user's home directory.
|
2017-01-31 20:34:11 +00:00
|
|
|
|
2017-10-16 01:27:59 +00:00
|
|
|
Here is an example of making an SFTP configuration. First run
|
2017-01-31 20:34:11 +00:00
|
|
|
|
|
|
|
rclone config
|
|
|
|
|
2017-06-23 15:25:35 +00:00
|
|
|
This will guide you through an interactive setup process.
|
|
|
|
|
2017-01-31 20:34:11 +00:00
|
|
|
```
|
|
|
|
No remotes found - make a new one
|
|
|
|
n) New remote
|
|
|
|
s) Set configuration password
|
|
|
|
q) Quit config
|
2017-06-23 15:25:35 +00:00
|
|
|
n/s/q> n
|
2017-01-31 20:34:11 +00: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-24 22:24:46 +00:00
|
|
|
6 / FTP Connection
|
|
|
|
\ "ftp"
|
|
|
|
7 / Google Cloud Storage (this is not Google Drive)
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "google cloud storage"
|
2017-05-24 22:24:46 +00:00
|
|
|
8 / Google Drive
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "drive"
|
2017-05-24 22:24:46 +00:00
|
|
|
9 / Hubic
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "hubic"
|
2017-05-24 22:24:46 +00:00
|
|
|
10 / Local Disk
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "local"
|
2017-05-24 22:24:46 +00:00
|
|
|
11 / Microsoft OneDrive
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "onedrive"
|
2017-05-24 22:24:46 +00:00
|
|
|
12 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "swift"
|
2017-05-24 22:24:46 +00:00
|
|
|
13 / SSH/SFTP Connection
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "sftp"
|
2017-05-24 22:24:46 +00:00
|
|
|
14 / Yandex Disk
|
2017-01-31 20:34:11 +00:00
|
|
|
\ "yandex"
|
2017-06-23 15:25:35 +00:00
|
|
|
15 / http Connection
|
|
|
|
\ "http"
|
2017-05-24 22:24:46 +00:00
|
|
|
Storage> sftp
|
2017-01-31 20:34:11 +00: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 15:25:35 +00:00
|
|
|
user> sftpuser
|
2017-05-24 22:24:46 +00:00
|
|
|
SSH port, leave blank to use default (22)
|
2017-01-31 20:34:11 +00:00
|
|
|
port>
|
2017-06-23 15:25:35 +00:00
|
|
|
SSH password, leave blank to use ssh-agent.
|
2017-01-31 20:34:11 +00: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 15:25:35 +00:00
|
|
|
Path to unencrypted PEM-encoded private key file, leave blank to use ssh-agent.
|
|
|
|
key_file>
|
2017-01-31 20:34:11 +00:00
|
|
|
Remote config
|
|
|
|
--------------------
|
|
|
|
[remote]
|
|
|
|
host = example.com
|
2017-06-23 15:25:35 +00:00
|
|
|
user = sftpuser
|
2017-01-31 20:34:11 +00:00
|
|
|
port =
|
|
|
|
pass =
|
2017-06-23 15:25:35 +00:00
|
|
|
key_file =
|
2017-01-31 20:34:11 +00:00
|
|
|
--------------------
|
|
|
|
y) Yes this is OK
|
|
|
|
e) Edit this remote
|
|
|
|
d) Delete this remote
|
|
|
|
y/e/d> y
|
|
|
|
```
|
|
|
|
|
2017-10-16 01:27:59 +00:00
|
|
|
This remote is called `remote` and can now be used like this:
|
2017-01-31 20:34:11 +00: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 15:25:35 +00:00
|
|
|
### SSH Authentication ###
|
|
|
|
|
2017-10-16 01:27:59 +00:00
|
|
|
The SFTP remote supports three authentication methods:
|
2017-06-23 15:25:35 +00:00
|
|
|
|
|
|
|
* Password
|
|
|
|
* Key file
|
|
|
|
* ssh-agent
|
|
|
|
|
|
|
|
Key files should be unencrypted PEM-encoded private key files. For
|
|
|
|
instance `/home/$USER/.ssh/id_rsa`.
|
|
|
|
|
2017-10-16 01:27:59 +00:00
|
|
|
If you don't specify `pass` or `key_file` then rclone will attempt to
|
2017-06-23 15:25:35 +00:00
|
|
|
contact an ssh-agent.
|
|
|
|
|
2018-03-14 23:17:09 +00: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 15:25:35 +00: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.
|
|
|
|
|
2018-03-14 23:17:09 +00:00
|
|
|
### Specific options ###
|
|
|
|
|
|
|
|
Here are the command line options specific to this remote.
|
|
|
|
|
|
|
|
#### --sftp-ask-password ####
|
|
|
|
|
|
|
|
Ask for the SFTP password if needed when no password has been configured.
|
|
|
|
|
2017-01-31 20:34:11 +00: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 14:52:47 +00: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.
|
|
|
|
|
2017-01-31 20:34:11 +00:00
|
|
|
### Limitations ###
|
|
|
|
|
2017-08-06 10:49:52 +00: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 19:49:49 +00: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 09:01:35 +00:00
|
|
|
which are not under your control, and to which the execution of remote commands
|
2018-04-20 19:49:49 +00:00
|
|
|
is prohibited. Set the configuration option `disable_hashcheck` to `true` to
|
|
|
|
disable checksumming.
|
2017-01-31 20:34:11 +00:00
|
|
|
|
2017-10-28 06:03:51 +00:00
|
|
|
The only ssh agent supported under Windows is Putty's pageant.
|
2017-04-10 13:50:06 +00:00
|
|
|
|
2017-12-08 12:22:09 +00: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 20:34:11 +00: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).
|