[ 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: dev-unsubscr...@mina.apache.org For additional commands, e-mail: dev-h...@mina.apache.org