Undocumented sftp put -r quirk: Couldn't canonicalize: No such file or directory

Parke parke.nexus at gmail.com
Thu Apr 17 08:57:41 EST 2014


Hi,

As of OpenSSH 6.5 on Ubuntu 14.04 (package version 1:6.5p1-6), there
appears to be an undocumented requirement for the sftp "put -r"
command.  In order to "put -r foo", a remote directory named "foo"
must already exist.

If a remote directory named foo does not exist, the following
(confusing) error message is displayed:

sftp> put -r foo
Uploading foo/ to /home/user/test/foo
Couldn't canonicalize: No such file or directory
Unable to canonicalize path "/home/parke/test/foo"

I recommend that this requirement be documented in the sftp manpage.
I can draft language, if needed.

The error message could also be more helpful.  For example: "Required
remote directory "foo" does not exist."

There is related discussion on stack exchange:
http://unix.stackexchange.com/questions/7004/uploading-directories-with-sftp
http://stackoverflow.com/questions/17477226/what-cause-the-error-couldnt-canonicalise-no-such-file-or-directory-in-sftp

Thanks!

-Parke


More information about the openssh-unix-dev mailing list