[ 
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

Reply via email to