Trouble getting SugarSync remote configured

What is the problem you are having with rclone?

I am trying to set up a new remote for SugarSync. I accept all defaults and provide my email and password as requested. I get an error message that says
Error: failed to get token: HTTP error 401 (401 Unauthorized)

I have checked and typed my credentials carefully. I am typing them correctly. HOWEVER, I do note that the password contains a space character. I was wondering if there is any chance that the password parsing is not handling the space correctly? If all else fails I will try to rule this out by changing the password on the account, but this act would be highly disruptive since it is shared/used by multiple users on multiple machines not co-located so I was hoping the get an initial response to the question before I try the brute force approach.... I was not attempting to do anything unusual and was surprised that it did not work out of the gate.

What is your rclone version (output from rclone version)

rclone v1.56.0
- os/version: ubuntu 20.04 (64 bit)
- os/kernel: 5.4.0-80-generic (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.16.5
- go/linking: static
- go/tags: none

Which OS you are using and how many bits (eg Windows 7, 64 bit)

Ubuntu 20.04 64 bit

Which cloud storage system are you using? (eg Google Drive)

SugarSync

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone config

The rclone config contents with secrets removed.

No config generated yet.

A log from the command with the -vv flag

$ rclone -vv config
2021/08/10 00:44:50 DEBUG : rclone: Version "v1.56.0" starting with parameters ["rclone" "-vv" "config"]
2021/08/10 00:44:50 DEBUG : Using config file from "/home/peter/.config/rclone/rclone.conf"
Current remotes:

Name                 Type
====                 ====
dropbox              dropbox

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n
name> sugarsync
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Citrix Sharefile
   \ "sharefile"
 9 / Compress a remote
   \ "compress"
10 / Dropbox
   \ "dropbox"
11 / Encrypt/Decrypt a remote
   \ "crypt"
12 / Enterprise File Fabric
   \ "filefabric"
13 / FTP Connection
   \ "ftp"
14 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
15 / Google Drive
   \ "drive"
16 / Google Photos
   \ "google photos"
17 / Hadoop distributed file system
   \ "hdfs"
18 / Hubic
   \ "hubic"
19 / In memory object storage system.
   \ "memory"
20 / Jottacloud
   \ "jottacloud"
21 / Koofr
   \ "koofr"
22 / Local Disk
   \ "local"
23 / Mail.ru Cloud
   \ "mailru"
24 / Mega
   \ "mega"
25 / Microsoft Azure Blob Storage
   \ "azureblob"
26 / Microsoft OneDrive
   \ "onedrive"
27 / OpenDrive
   \ "opendrive"
28 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
29 / Pcloud
   \ "pcloud"
30 / Put.io
   \ "putio"
31 / QingCloud Object Storage
   \ "qingstor"
32 / SSH/SFTP Connection
   \ "sftp"
33 / Sugarsync
   \ "sugarsync"
34 / Tardigrade Decentralized Cloud Storage
   \ "tardigrade"
35 / Transparently chunk/split large files
   \ "chunker"
36 / Union merges the contents of several upstream fs
   \ "union"
37 / Uptobox
   \ "uptobox"
38 / Webdav
   \ "webdav"
39 / Yandex Disk
   \ "yandex"
40 / Zoho
   \ "zoho"
41 / http Connection
   \ "http"
42 / premiumize.me
   \ "premiumizeme"
43 / seafile
   \ "seafile"
Storage> 33
2021/08/10 00:45:11 DEBUG : sugarsync: config in: state="*all", result=""
2021/08/10 00:45:11 DEBUG : sugarsync: config out: out=&{State:*all-set,0,false Option: OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:45:11 DEBUG : sugarsync: config: reading config parameter "app_id"
Sugarsync App ID.

Leave blank to use rclone's.
Enter a string value. Press Enter for the default ("").
app_id> 
2021/08/10 00:45:40 DEBUG : sugarsync: config in: state="*all-set,0,false", result=""
2021/08/10 00:45:40 DEBUG : sugarsync: config out: out=&{State:*all,1,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:45:40 DEBUG : sugarsync: config in: state="*all,1,false", result=""
2021/08/10 00:45:40 DEBUG : sugarsync: config out: out=&{State:*all-set,1,false Option: OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:45:40 DEBUG : sugarsync: config: reading config parameter "access_key_id"
Sugarsync Access Key ID.

Leave blank to use rclone's.
Enter a string value. Press Enter for the default ("").
access_key_id> 
2021/08/10 00:46:09 DEBUG : sugarsync: config in: state="*all-set,1,false", result=""
2021/08/10 00:46:09 DEBUG : sugarsync: config out: out=&{State:*all,2,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:09 DEBUG : sugarsync: config in: state="*all,2,false", result=""
2021/08/10 00:46:09 DEBUG : sugarsync: config out: out=&{State:*all-set,2,false Option: OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:09 DEBUG : sugarsync: config: reading config parameter "private_access_key"
Sugarsync Private Access Key

Leave blank to use rclone's.
Enter a string value. Press Enter for the default ("").
private_access_key> 
2021/08/10 00:46:16 DEBUG : sugarsync: config in: state="*all-set,2,false", result=""
2021/08/10 00:46:16 DEBUG : sugarsync: config out: out=&{State:*all,3,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:16 DEBUG : sugarsync: config in: state="*all,3,false", result=""
2021/08/10 00:46:16 DEBUG : sugarsync: config out: out=&{State:*all-set,3,false Option:false OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:16 DEBUG : sugarsync: config: reading config parameter "hard_delete"
Permanently delete files if true
otherwise put them in the deleted files.
Enter a boolean value (true or false). Press Enter for the default ("false").
hard_delete> 
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all-set,3,false", result="false"
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,4,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,4,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,5,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,5,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,6,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,6,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,7,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,7,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,8,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,8,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,9,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,9,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,10,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,10,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all,11,false Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config in: state="*all,11,false", result=""
2021/08/10 00:46:18 DEBUG : sugarsync: config out: out=&{State:*all-advanced Option:false OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:18 DEBUG : sugarsync: config: reading config parameter "config_fs_advanced"
Edit advanced config?
y) Yes
n) No (default)
y/n> 
2021/08/10 00:46:22 DEBUG : sugarsync: config in: state="*all-advanced", result="false"
2021/08/10 00:46:22 DEBUG : sugarsync: config out: out=&{State:*postconfig Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:22 DEBUG : sugarsync: config in: state="*postconfig", result=""
2021/08/10 00:46:22 DEBUG : sugarsync: config in: state="", result=""
2021/08/10 00:46:22 DEBUG : sugarsync: config out: out=&{State:username Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:22 DEBUG : sugarsync: config out: out=&{State:username Option:<nil> OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:22 DEBUG : sugarsync: config in: state="username", result=""
2021/08/10 00:46:22 DEBUG : sugarsync: config out: out=&{State:password Option: OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:22 DEBUG : sugarsync: config: reading config parameter "config_username"
username (email address)
Enter a string value. Press Enter for the default ("").
config_username> <REDACTED>
2021/08/10 00:46:49 DEBUG : sugarsync: config in: state="password", result="<REDACTED>"
2021/08/10 00:46:49 DEBUG : Saving config "username" in section "sugarsync" of the config file
2021/08/10 00:46:49 DEBUG : sugarsync: config out: out=&{State:auth Option: OAuth:<nil> Error: Result:}, err=<nil>
2021/08/10 00:46:49 DEBUG : sugarsync: config: reading config parameter "config_password"
Your Sugarsync password.

Only required during setup and will not be stored.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n> y
Enter the password:
password:
Confirm the password:
password:
2021/08/10 00:47:59 DEBUG : sugarsync: config in: state="auth", result="<REDACTED>"
2021/08/10 00:47:59 DEBUG : Saving config "username" in section "sugarsync" of the config file
2021/08/10 00:48:00 DEBUG : sugarsync: config out: out=<nil>, err=failed to get token: HTTP error 401 (401 Unauthorized) returned body: "<html>\n<head>\n   <title>Status page</title>\n</head>\n<body>\n<h3>invalid user credentials</h3><p>You can get technical details <a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2\">here</a>.<br>\nPlease continue your visit at our <a href=\"/\">home page</a>.\n</p>\n</body>\n</html>\n"
Error: failed to get token: HTTP error 401 (401 Unauthorized) returned body: "<html>\n<head>\n   <title>Status page</title>\n</head>\n<body>\n<h3>invalid user credentials</h3><p>You can get technical details <a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2\">here</a>.<br>\nPlease continue your visit at our <a href=\"/\">home page</a>.\n</p>\n</body>\n</html>\n"
Usage:
  rclone config [flags]
  rclone config [command]

Available Commands:
  create      Create a new remote with name, type and options.
  delete      Delete an existing remote `name`.
  disconnect  Disconnects user from remote
  dump        Dump the config file as JSON.
  file        Show path of configuration file in use.
  password    Update password in an existing remote.
  providers   List in JSON format all the providers and options.
  reconnect   Re-authenticates user with remote.
  show        Print (decrypted) config file, or the config for a single remote.
  touch       Ensure configuration file exists.
  update      Update options in an existing remote.
  userinfo    Prints info about logged in user of remote.

Flags:
  -h, --help   help for config

Additional help topics:
  rclone config edit       Enter an interactive configuration session.

Use "rclone [command] --help" for more information about a command.
Use "rclone help flags" for to see the global flags.
Use "rclone help backends" for a list of supported services.

2021/08/10 00:48:00 Fatal error: failed to get token: HTTP error 401 (401 Unauthorized) returned body: "<html>\n<head>\n   <title>Status page</title>\n</head>\n<body>\n<h3>invalid user credentials</h3><p>You can get technical details <a href=\"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2\">here</a>.<br>\nPlease continue your visit at our <a href=\"/\">home page</a>.\n</p>\n</body>\n</html>\n"

hello and welcome to the forum,

have you tried to enclose the password in quotes.

I'm not sure how to do that. Rclone prompts for the password about half way through the config "interview", which I type (with space character) when prompted.

i did some testing, and the issue is not the space character.

v1.55.1, no problem creating a sugarsync remote, without or without a space character in the password.

with v.1.56.0, i cannot create a sugarsync remote, regardless of the password.

this could be a bug....

Thanks. I confirmed as well by changing the password to something simpler and could not successfully create a remote. I'll nose around a bit, but could you point me to where I should file the bug report? I'm assuming it's over on github somewhere. Also, is there an easy way to roll back to prior version 1.55.1? Right now the only thing I can think of is to download source and build....

Update:

Created bug report on github...
https://github.com/rclone/rclone/issues/5525

Update:

Confirmed that rclone 1.55.1 works for me with sugarsync but rclone 1.56.0 does not. Updated the bug report as well.

Bug confirmed in 1.56.0 and is already fixed in beta release over on GitHub - fix will be added back into the 1.56.1 release and 1.57.0 release...

If you have a SugarSync remote created from an older version of rclone (1.55.1 or earlier), that remote is safe to use in 1.56.0. However, 1.56.0 will not be able to successfully create a new remote to SugarSync. Wait for the new release or revert to an older release to create a usable remote.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.