[
https://issues.apache.org/jira/browse/SSHD-1215?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17426623#comment-17426623
]
Thomas Wolf commented on SSHD-1215:
-----------------------------------
Though... looking at the [WinSCP
code|https://github.com/winscp/winscp/blob/0526ba0/source/core/SftpFileSystem.cpp#L4931]
it seems that WinSCP _always_ includes the ACE4_APPEND_DATA desired-access
flag for _any_ write access. So probably it expects it to be honored only if it
also sets SSH_FXF_APPEND_DATA, and ignored otherwise...
Since the SFTP draft RFC is so unclear, let's see what the NFS RFCs have to say
about this.
* [RFC 3010|https://datatracker.ietf.org/doc/html/rfc3010] and [RFC
3530|https://datatracker.ietf.org/doc/html/rfc3530]: ACE4_APPEND_DATA is a
permission to write at the end of the file and is included in
ACE4_GENERIC_WRITE. This kind of supports the use by WinSCP.
* [RFC 7530|https://datatracker.ietf.org/doc/html/rfc7530]: ACE4_APPEND_DATA is
a permission for writing at the end of the file _only_. There is no "generic
write" flag combination anymore, but from the discussion of only
ACE4_APPEND_DATA without ACE4_WRITE_DATA being set it's clear that including
both is allowed and would permit writing anywhere in the file.
So this kind of also supports using the ACE4_APPEND_DATA desired-access as a
kind of "hint" only, and using instead only SSH_FXF_APPEND_DATA to determine
"append" mode.
Changing Apache MINA sshd similarly would require also a client-side change and
would give an interoperability problem with current (and older) Apache MINA
sshd clients (which set ACE4_APPEND_DATA only when they do want "append" mode,
but expect it to have an effect even if SSH_FXF_APPEND_DATA is not set). It's
not clear to me how we should deal with this.
> WinsCP transfer failure to Apache SSHD Server
> ---------------------------------------------
>
> Key: SSHD-1215
> URL: https://issues.apache.org/jira/browse/SSHD-1215
> Project: MINA SSHD
> Issue Type: Bug
> Affects Versions: 2.6.0
> Reporter: Roberto Deandrea
> Priority: Blocker
> Attachments: logs.zip
>
>
> Hi
> I have a failure transferring small files from a WinSCP SFTP client version
> 5.19.2 to a front-end Apache SSHD Server 2.6.0.
> The front-end Apache SSHD server is configured with a Filesystem built upon
> SFTPFileSystemProvider to proxy files to an Apache SSHD back-end server.
> WinSCP SFTP transfer files successfully directly to back-end Apache SSHD
> Server.
> I traced the SFTP file transfer on the front-end server and back-end server
> and it seems that something get wrong in the remote FileSystem set on the
> front-end server.
> From traces it seems that the first chunk of file is received correctly by
> the back-end server, but something is wrong on the second chuck of file
> transmitted.
> -------------------------------------------------------------------------------------------------------------------------
> First SSH_FXP_WRITE chunk received from front-end server :
> [16/09/21 09:18:26:364 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.server.AbstractSftpSubsystemHelper 1 process
> process(ServerSessionImpl[allfuser1@/172.18.202.33:55400])[length=32757,
> type=SSH_FXP_WRITE, id=19718] processing
> [16/09/21 09:18:26:364 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.server.SftpSubsystem 3 doWrite
> doWrite(ServerSessionImpl[allfuser1@/172.18.202.33:55400])[id=19718]
> *SSH_FXP_WRITE
> (handle=de6fcf635cb34b0e6d3d56643b7539a3[[/upload/rsa.key|https://issues.apache.org/upload/rsa.key]],
> offset=0, data=byte[32704])*
> First SSH_FXP_WRITE chunk sent by front-end SFTP client to back.end-server :
> [16/09/21 09:18:26:913 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.client.impl.DefaultSftpClient 3 send
> send(SftpChannelSubsystem[id=0,
> recipient=0]-ClientSessionImpl[DMZ/172.18.202.33/allfuser1@/10.6.6.22:6471][sftp])
> cmd=SSH_FXP_WRITE, len=32752, id=139
> [16/09/21 09:18:27:010 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.client.impl.AbstractSftpClient 3 checkResponseStatus
> checkResponseStatus(SftpChannelSubsystem[id=0,
> recipient=0]-ClientSessionImpl[DMZ/172.18.202.33/allfuser1@/10.6.6.22:6471][sftp])[id=139]
> cmd=SSH_FXP_WRITE status=SSH_FX_OK lang= msg=
>
> First SSH_FXP_WRITE chunk received succesfully from back-end server :
> [16/09/21 09:18:27:007 CEST] 00005c15 id=00000000
> org.apache.sshd.sftp.server.SftpSubsystem 3 doWrite
> doWrite(ServerSessionImpl[DMZ/172.18.202.33/allfuser1@/10.6.6.22:34445])[id=139]
> *SSH_FXP_WRITE
> (handle=c88cfd55dd514ccdd0428571191f5ea1[[/upload/rsa.key|https://issues.apache.org/upload/rsa.key]],
> offset=0, data=byte[32704])*
> [16/09/21 09:18:27:545 CEST] 00005c15 id=00000000
> org.apache.sshd.sftp.server.AbstractSftpSubsystemHelper 1 process
> process(ServerSessionImpl[DMZ/172.18.202.33/allfuser1@/10.6.6.22:34445])[length=32757,
>
> -----------------------------------------------------------------------------------------------------
> Second SSH_FXP_WRITE chunk received from front-end server:
> [16/09/21 09:18:27:012 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.server.AbstractSftpSubsystemHelper 1 process
> process(ServerSessionImpl[allfuser1@/172.18.202.33:55400])[length=32757,
> type=SSH_FXP_WRITE, id=19974] processing
> [16/09/21 09:18:27:013 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.server.SftpSubsystem 3 doWrite
> doWrite(ServerSessionImpl[allfuser1@/172.18.202.33:55400])[id=19974]
> *SSH_FXP_WRITE
> (handle=de6fcf635cb34b0e6d3d56643b7539a3[[/upload/rsa.key|https://issues.apache.org/upload/rsa.key]],
> offset=32704, data=byte[32704])*
>
> Second SSH_FXP_WRITE chunk sent by front-end SFTP client to back-end server:
> [16/09/21 09:18:27:473 CEST] 00000175 id=00000000
> org.apache.sshd.sftp.client.impl.DefaultSftpClient 3 send
> send(SftpChannelSubsystem[id=0,
> recipient=0]-ClientSessionImpl[DMZ/172.18.202.33/allfuser1@/10.6.6.22:6471][sftp])
> cmd=SSH_FXP_WRITE, len=32752, *id=141*
>
> Second SSH_FXP_WRITE chunk received from back-end server:
> type=SSH_FXP_WRITE, *id=141*] processing
> [16/09/21 09:18:27:545 CEST] 00005c15 id=00000000
> org.apache.sshd.sftp.server.SftpSubsystem 3 doWrite
> doWrite(ServerSessionImpl[DMZ/172.18.202.33/allfuser1@/10.6.6.22:34445])[*id=141*]
> SSH_FXP_WRITE
> (handle=c88cfd55dd514ccdd0428571191f5ea1[[/upload/rsa.key|https://issues.apache.org/upload/rsa.key]],
> *offset=0, data=byte[32704*])
> Now the back-end server complains about this data. The back-end server is
> expecting a chunk of data at offset=32704 and not offset = 0.
> java.io.IOException:
> position([/upload/rsa.key|https://issues.apache.org/upload/rsa.key]) *illegal
> file channel position, expected frsPosition: 32704, found: 0*
> This is a blocking error and causes the connection closing of the parts
> involved.
> ----------------------------------------------------------------------------------------------------------------------
> Full traces are attached to this jira.
>
> Questions and considerations.
> # Is this a known problem and is fixed in the latest release of Apache SSHD?
> # If this is a new problem can you suggest me how to fix it, or better
> troubleshoot it
> # Let me know if you need further info for troubleshooting
>
> Thanks in advance for your support
>
> Kind Regards
> Roberto Deandrea
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]