[Cyberduck-trac] [Cyberduck] #8166: Interoperability with SSH Tectia Server
Cyberduck
trac at trac.cyberduck.io
Mon Sep 8 12:48:32 UTC 2014
#8166: Interoperability with SSH Tectia Server
--------------------------------------+---------------------------
Reporter: tomihasa | Owner: I am owner
Type: defect | Status: reopened
Priority: high | Milestone:
Component: sftp | Version: 4.5.1
Severity: critical | Resolution:
Keywords: listing,directory,failed | Architecture: Intel
Platform: |
--------------------------------------+---------------------------
Changes (by bact):
* status: closed => reopened
* platform: Mac OS X 10.9 =>
* resolution: thirdparty =>
Comment:
I would like this ticket to be reopened, as it seems to me a CyberDuck
issue.
Apparently it seems that the Tectia SSH server creates a handle for the
OpenDIR operation and gives it to the CyberDuck client.
When doing ReadDir, Cyberduck client sends back that handle modified to
the Tectia SSH server, so the Tectia SSH server is not able to fulfill the
operation.
The SSH File Transfer Protocol clearly states:
http://tools.ietf.org/html/draft-ietf-secsh-filexfer-01
"The SSH_FXP_HANDLE response has the following format: [[BR]]
uint32 id [[BR]]
string handle[[BR]]
where `id' is the request identifier, and `handle' is an arbitrary string
that identifies an open file or directory on the server. The handle is
opaque to the client; the client MUST NOT attempt to interpret or modify
it in any way. The length of the handle string MUST NOT exceed 256 data
bytes."
Checking at the SSHJ code (sshj-0.8.1.zip) it seems that the code assumes
the incoming string is UTF-8, and the code does some conversions that will
fail if applied against a binary string. Tectia SSH Server sends binary
strings, so, Cyberduck does some conversion resulting in a modified handle
when requesting for ReadDir…
I have taken the liberty to modify the SSHJ code a bit, just by changing
the type of the “handle” as “byte[]” and using readBytes/writeBytes
function and it seems to correct the problem.
I am not sure, though, what version of sshj CyberDuck is using, but I have
seen a similar behavior.
To my eyes, Tectia SSH Server works as specified, and Cyberduck is
violating clearly the protocol. Please, correct me if I am wrong.
--
Ticket URL: <https://trac.cyberduck.io/ticket/8166#comment:13>
Cyberduck <http://cyberduck.io>
Libre FTP, SFTP, WebDAV, S3 & OpenStack Swift browser for Mac and Windows
More information about the Cyberduck-trac
mailing list