Apache Mina SSHD - FileZilla 显示错误的目录结构
Apache Mina SSHD - FileZilla shows wrong directory structure
我使用 Apache Mina SSHD 将 SSH 服务器设置为 SFTP 服务器。我实现了自己的 FileSystemFactory
,以便为登录的用户创建特定目录。当我使用 FileZilla 打开与服务器的连接时,目录结构显示错误。
在根目录视图中,显示一个空文件夹。这个不存在。应该只有两个目录。 "Upload" 和 "Download".
当我打开上传目录时,我再次看到一个空目录,不应该显示,因为它不存在。此外,还显示了另一个上传目录。我无法打开它,因为它说 /upload/upload 不存在,这是真的,但我不明白为什么会显示它。
当我连接 WinSCP 时,我没有得到这个显示错误。有谁知道为什么会这样或者怎么解决?
编辑:
FileSystemFactory
实施:
public class CustomFileSystemFactory implements FileSystemFactory {
private String defaultHomeDir;
private FileSystem fileSystem;
public CustomFileSystemFactory(String defaultHomeDir){
this.defaultHomeDir = defaultHomeDir;
}
public String getDefaultHome(){
return defaultHomeDir;
}
public FileSystem getFileSystem(){
return fileSystem;
}
@Override
public FileSystem createFileSystem(Session session) throws IOException {
Path dir = computeRootDir(session.getUsername());
if (dir == null) {
throw new InvalidPathException(session.getUsername(), "Cannot resolve home directory");
}
if(!Files.exists(dir)){
Files.createDirectory(dir);
}
setupFolders(session.getUsername());
FileSystem fileSystem = new RootedFileSystemProvider().newFileSystem(dir, Collections.emptyMap());
return fileSystem;
}
protected Path computeRootDir(String username){
Path path = Paths.get(defaultHomeDir + Utils.getPrincipalExtId(username) + "/");
return path;
}
protected void setupFolders(String username) throws IOException {
Path homeDir = computeRootDir(username);
File uploadFolder = new File(homeDir + "/upload/");
File downloadFolder = new File(homeDir + "/download/");
if(!uploadFolder.exists()){
uploadFolder.mkdirs();
}
if(!downloadFolder.exists()){
downloadFolder.mkdirs();
}
}
}
这是调试级别 2 上的 WinSCP 日志:
. 2016-01-07 14:46:46.909 Listing directory "/".
> 2016-01-07 14:46:46.909 Type: SSH_FXP_OPENDIR, Size: 10, Number: 4107
> 2016-01-07 14:46:46.909 0B,00,00,10,0B,00,00,00,01,2F,
. 2016-01-07 14:46:46.909 Sent 14 bytes
. 2016-01-07 14:46:46.909 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.909 Looking for network events
. 2016-01-07 14:46:46.909 Timeout waiting for network events
. 2016-01-07 14:46:46.909 Waiting for another 4 bytes
. 2016-01-07 14:46:46.909 Looking for incoming data
. 2016-01-07 14:46:46.909 Looking for network events
. 2016-01-07 14:46:46.913 Detected network event
. 2016-01-07 14:46:46.913 Enumerating network events for socket 1084
. 2016-01-07 14:46:46.913 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:46.913 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:46.913 Received 45 bytes (0)
. 2016-01-07 14:46:46.913 Read 4 bytes (41 pending)
. 2016-01-07 14:46:46.913 Read 41 bytes (0 pending)
< 2016-01-07 14:46:46.913 Type: SSH_FXP_HANDLE, Size: 41, Number: 4107
< 2016-01-07 14:46:46.913 66,00,00,10,0B,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
< 2016-01-07 14:46:46.913 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
> 2016-01-07 14:46:46.913 Type: SSH_FXP_READDIR, Size: 41, Number: 4364
> 2016-01-07 14:46:46.913 0C,00,00,11,0C,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
> 2016-01-07 14:46:46.913 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
. 2016-01-07 14:46:46.913 Sent 45 bytes
. 2016-01-07 14:46:46.914 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.914 Looking for network events
. 2016-01-07 14:46:46.914 Timeout waiting for network events
. 2016-01-07 14:46:46.914 Waiting for another 4 bytes
. 2016-01-07 14:46:46.914 Looking for incoming data
. 2016-01-07 14:46:46.914 Looking for network events
. 2016-01-07 14:46:46.924 Detected network event
. 2016-01-07 14:46:46.924 Enumerating network events for socket 1084
. 2016-01-07 14:46:46.924 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:46.924 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:46.925 Received 1113 bytes (0)
. 2016-01-07 14:46:46.925 Read 4 bytes (1109 pending)
. 2016-01-07 14:46:46.925 Read 1109 bytes (0 pending)
< 2016-01-07 14:46:46.925 Type: SSH_FXP_NAME, Size: 1109, Number: 4364
< 2016-01-07 14:46:46.925 68,00,00,11,0C,00,00,00,03,00,00,00,01,2E,00,00,00,7C,02,00,00,41,B6,00,00,
< 2016-01-07 14:46:46.925 00,00,56,79,11,96,00,00,00,00,56,79,11,96,00,00,00,00,56,79,11,96,00,00,01,
< 2016-01-07 14:46:46.925 37,00,00,00,07,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,1C,56,4F,52,44,
< 2016-01-07 14:46:46.925 45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,
< 2016-01-07 14:46:46.925 00,00,00,00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,
< 2016-01-07 14:46:46.925 52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,1F,01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,
< 2016-01-07 14:46:46.925 53,54,45,4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,14,4E,54,2D,41,55,
< 2016-01-07 14:46:46.925 54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,03,00,12,
< 2016-01-07 14:46:46.925 00,A9,00,00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,42,65,6E,75,74,7A,
< 2016-01-07 14:46:46.925 65,72,00,00,00,00,00,00,00,00,00,13,01,BF,00,00,00,27,4E,54,2D,41,55,54,4F,
< 2016-01-07 14:46:46.925 52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,
< 2016-01-07 14:46:46.925 65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,00,00,00,00,00,27,4E,54,
< 2016-01-07 14:46:46.925 2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,
< 2016-01-07 14:46:46.925 72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,08,64,6F,77,6E,6C,6F,61,64,00,
< 2016-01-07 14:46:46.925 00,00,7C,02,00,00,41,B6,00,00,00,00,56,8E,52,55,00,00,00,00,56,8E,52,55,00,
< 2016-01-07 14:46:46.925 00,00,00,56,8E,52,55,00,00,01,54,00,00,00,08,00,00,00,00,00,00,00,03,00,1F,
< 2016-01-07 14:46:46.925 01,FF,00,00,00,0D,44,55,53,5C,6E,6D,65,63,6B,6D,61,6E,6E,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,1F,01,FF,00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,
< 2016-01-07 14:46:46.925 6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,0B,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,
< 2016-01-07 14:46:46.925 72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,14,4E,54,
< 2016-01-07 14:46:46.925 2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 0B,00,00,00,00,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,
< 2016-01-07 14:46:46.925 53,54,45,4D,00,00,00,00,00,00,00,03,00,12,00,A9,00,00,00,15,56,4F,52,44,45,
< 2016-01-07 14:46:46.925 46,49,4E,49,45,52,54,5C,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 13,01,BF,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,
< 2016-01-07 14:46:46.925 65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,0B,00,01,00,00,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,
< 2016-01-07 14:46:46.925 5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,
< 2016-01-07 14:46:46.925 72,00,00,00,06,75,70,6C,6F,61,64,00,00,00,7C,02,00,00,41,B6,00,00,00,00,56,
< 2016-01-07 14:46:46.925 8E,51,ED,00,00,00,00,56,8E,51,ED,00,00,00,00,56,8E,51,ED,00,00,01,37,00,00,
< 2016-01-07 14:46:46.925 00,07,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,1C,56,4F,52,44,45,46,49,
< 2016-01-07 14:46:46.925 4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,
< 2016-01-07 14:46:46.925 41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,00,00,1F,
< 2016-01-07 14:46:46.925 01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,
< 2016-01-07 14:46:46.925 4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,14,4E,54,2D,41,55,54,4F,52,
< 2016-01-07 14:46:46.925 49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,03,00,12,00,A9,00,
< 2016-01-07 14:46:46.925 00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,42,65,6E,75,74,7A,65,72,00,
< 2016-01-07 14:46:46.925 00,00,00,00,00,00,00,00,13,01,BF,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,
< 2016-01-07 14:46:46.925 C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,
< 2016-01-07 14:46:46.925 74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,00,00,00,00,00,27,4E,54,2D,41,55,
< 2016-01-07 14:46:46.926 54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,
< 2016-01-07 14:46:46.926 20,42,65,6E,75,74,7A,65,72,
> 2016-01-07 14:46:46.926 Type: SSH_FXP_READDIR, Size: 41, Number: 4620
> 2016-01-07 14:46:46.926 0C,00,00,12,0C,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
> 2016-01-07 14:46:46.926 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
. 2016-01-07 14:46:46.926 Sent 45 bytes
. 2016-01-07 14:46:46.926 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.926 Looking for network events
. 2016-01-07 14:46:46.926 Timeout waiting for network events
. 2016-01-07 14:46:46.926 Read file '.' from listing
. 2016-01-07 14:46:46.926 Read file 'download' from listing
. 2016-01-07 14:46:46.926 Read file 'upload' from listing
. 2016-01-07 14:46:46.926 Waiting for another 4 bytes
. 2016-01-07 14:46:46.926 Looking for incoming data
. 2016-01-07 14:46:46.926 Looking for network events
. 2016-01-07 14:46:46.926 Detected network event
. 2016-01-07 14:46:46.926 Enumerating network events for socket 1084
. 2016-01-07 14:46:46.926 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:46.926 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:46.926 Received 46 bytes (0)
. 2016-01-07 14:46:46.926 Read 4 bytes (42 pending)
. 2016-01-07 14:46:46.926 Read 42 bytes (0 pending)
< 2016-01-07 14:46:46.926 Type: SSH_FXP_STATUS, Size: 42, Number: 4620
< 2016-01-07 14:46:46.926 65,00,00,12,0C,00,00,00,01,00,00,00,19,44,69,72,65,63,74,6F,72,79,20,72,65,
< 2016-01-07 14:46:46.926 61,64,69,6E,67,20,69,73,20,64,6F,6E,65,00,00,00,00,
< 2016-01-07 14:46:46.926 Status code: 1
> 2016-01-07 14:46:46.926 Type: SSH_FXP_CLOSE, Size: 41, Number: 4868
> 2016-01-07 14:46:46.926 04,00,00,13,04,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
> 2016-01-07 14:46:46.926 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
. 2016-01-07 14:46:46.926 Sent 45 bytes
. 2016-01-07 14:46:46.926 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.926 Looking for network events
. 2016-01-07 14:46:46.926 Timeout waiting for network events
. 2016-01-07 14:46:46.927 download;D;0;2016-01-07T11:56:05.000Z;"" [0];"" [0];rw-rw-rw-;1
. 2016-01-07 14:46:46.927 upload;D;0;2016-01-07T11:54:21.000Z;"" [0];"" [0];rw-rw-rw-;1
. 2016-01-07 14:46:47.009 Startup conversation with host finished.
. 2016-01-07 14:46:47.122 Session upkeep
. 2016-01-07 14:46:47.122 Looking for network events
. 2016-01-07 14:46:47.122 Detected network event
. 2016-01-07 14:46:47.122 Enumerating network events for socket 1084
. 2016-01-07 14:46:47.122 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:47.122 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:47.122 Received 21 bytes (0)
. 2016-01-07 14:46:47.124 Session upkeep
. 2016-01-07 14:46:47.124 Looking for network events
. 2016-01-07 14:46:47.124 Timeout waiting for network events
. 2016-01-07 14:46:47.257 Session upkeep
. 2016-01-07 14:46:47.257 Looking for network events
. 2016-01-07 14:46:47.257 Timeout waiting for network events
. 2016-01-07 14:46:47.768 Session upkeep
. 2016-01-07 14:46:47.768 Looking for network events
. 2016-01-07 14:46:47.768 Timeout waiting for network events
. 2016-01-07 14:46:48.267 Session upkeep
. 2016-01-07 14:46:48.267 Looking for network events
. 2016-01-07 14:46:48.267 Timeout waiting for network events
. 2016-01-07 14:46:48.781 Session upkeep
. 2016-01-07 14:46:48.782 Looking for network events
. 2016-01-07 14:46:48.782 Timeout waiting for network events
. 2016-01-07 14:46:48.832 Cached directory change via "download" to "/download".
. 2016-01-07 14:46:48.832 Getting current directory name.
. 2016-01-07 14:46:48.832 Listing directory "/download".
> 2016-01-07 14:46:48.832 Type: SSH_FXP_OPENDIR, Size: 18, Number: 5131
> 2016-01-07 14:46:48.832 0B,00,00,14,0B,00,00,00,09,2F,64,6F,77,6E,6C,6F,61,64,
. 2016-01-07 14:46:48.832 Sent 22 bytes
. 2016-01-07 14:46:48.832 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.832 Looking for network events
. 2016-01-07 14:46:48.834 Timeout waiting for network events
. 2016-01-07 14:46:48.834 Read 4 bytes (17 pending)
. 2016-01-07 14:46:48.834 Read 17 bytes (0 pending)
< 2016-01-07 14:46:48.834 Type: SSH_FXP_STATUS, Size: 17, Number: 4868
< 2016-01-07 14:46:48.834 65,00,00,13,04,00,00,00,00,00,00,00,00,00,00,00,00,
. 2016-01-07 14:46:48.834 Discarding reserved response
. 2016-01-07 14:46:48.834 Waiting for another 4 bytes
. 2016-01-07 14:46:48.834 Looking for incoming data
. 2016-01-07 14:46:48.834 Looking for network events
. 2016-01-07 14:46:48.834 Detected network event
. 2016-01-07 14:46:48.834 Enumerating network events for socket 1084
. 2016-01-07 14:46:48.834 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:48.834 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:48.834 Received 45 bytes (0)
. 2016-01-07 14:46:48.834 Read 4 bytes (41 pending)
. 2016-01-07 14:46:48.834 Read 41 bytes (0 pending)
< 2016-01-07 14:46:48.834 Type: SSH_FXP_HANDLE, Size: 41, Number: 5131
< 2016-01-07 14:46:48.834 66,00,00,14,0B,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
< 2016-01-07 14:46:48.834 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
> 2016-01-07 14:46:48.834 Type: SSH_FXP_READDIR, Size: 41, Number: 5388
> 2016-01-07 14:46:48.834 0C,00,00,15,0C,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
> 2016-01-07 14:46:48.834 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
. 2016-01-07 14:46:48.835 Sent 45 bytes
. 2016-01-07 14:46:48.835 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.835 Looking for network events
. 2016-01-07 14:46:48.835 Timeout waiting for network events
. 2016-01-07 14:46:48.835 Waiting for another 4 bytes
. 2016-01-07 14:46:48.835 Looking for incoming data
. 2016-01-07 14:46:48.835 Looking for network events
. 2016-01-07 14:46:48.840 Detected network event
. 2016-01-07 14:46:48.840 Enumerating network events for socket 1084
. 2016-01-07 14:46:48.840 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:48.840 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:48.840 Received 749 bytes (0)
. 2016-01-07 14:46:48.840 Read 4 bytes (745 pending)
. 2016-01-07 14:46:48.840 Read 745 bytes (0 pending)
< 2016-01-07 14:46:48.840 Type: SSH_FXP_NAME, Size: 745, Number: 5388
< 2016-01-07 14:46:48.840 68,00,00,15,0C,00,00,00,02,00,00,00,01,2E,00,00,00,7C,02,00,00,41,B6,00,00,
< 2016-01-07 14:46:48.840 00,00,56,8E,52,55,00,00,00,00,56,8E,52,55,00,00,00,00,56,8E,52,55,00,00,01,
< 2016-01-07 14:46:48.840 54,00,00,00,08,00,00,00,00,00,00,00,03,00,1F,01,FF,00,00,00,0D,44,55,53,5C,
< 2016-01-07 14:46:48.840 6E,6D,65,63,6B,6D,61,6E,6E,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,1C,
< 2016-01-07 14:46:48.840 56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,
< 2016-01-07 14:46:48.840 72,65,6E,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,52,44,45,46,
< 2016-01-07 14:46:48.840 49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,
< 2016-01-07 14:46:48.840 00,00,00,00,00,00,1F,01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,
< 2016-01-07 14:46:48.840 54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,14,4E,
< 2016-01-07 14:46:48.840 54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,
< 2016-01-07 14:46:48.840 00,03,00,12,00,A9,00,00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,42,65,
< 2016-01-07 14:46:48.840 6E,75,74,7A,65,72,00,00,00,00,00,00,00,00,00,13,01,BF,00,00,00,27,4E,54,2D,
< 2016-01-07 14:46:48.840 41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,
< 2016-01-07 14:46:48.840 74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,00,00,00,00,
< 2016-01-07 14:46:48.840 00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,
< 2016-01-07 14:46:48.840 69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,02,2E,2E,00,00,00,
< 2016-01-07 14:46:48.840 7C,02,00,00,41,B6,00,00,00,00,56,79,11,96,00,00,00,00,56,79,11,96,00,00,00,
< 2016-01-07 14:46:48.840 00,56,79,11,96,00,00,01,37,00,00,00,07,00,00,00,00,00,00,00,00,00,1F,01,FF,
< 2016-01-07 14:46:48.840 00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,
< 2016-01-07 14:46:48.840 72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,
< 2016-01-07 14:46:48.840 52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,
< 2016-01-07 14:46:48.840 6E,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,
< 2016-01-07 14:46:48.840 49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,
< 2016-01-07 14:46:48.840 00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,
< 2016-01-07 14:46:48.840 00,00,00,00,00,03,00,12,00,A9,00,00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,
< 2016-01-07 14:46:48.840 54,5C,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,00,00,13,01,BF,00,00,00,
< 2016-01-07 14:46:48.840 27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,
< 2016-01-07 14:46:48.840 7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,
< 2016-01-07 14:46:48.840 00,00,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,
< 2016-01-07 14:46:48.841 6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,
> 2016-01-07 14:46:48.841 Type: SSH_FXP_READDIR, Size: 41, Number: 5644
> 2016-01-07 14:46:48.841 0C,00,00,16,0C,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
> 2016-01-07 14:46:48.841 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
. 2016-01-07 14:46:48.841 Sent 45 bytes
. 2016-01-07 14:46:48.841 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.841 Looking for network events
. 2016-01-07 14:46:48.841 Timeout waiting for network events
. 2016-01-07 14:46:48.841 Read file '.' from listing
. 2016-01-07 14:46:48.841 Read file '..' from listing
. 2016-01-07 14:46:48.841 Waiting for another 4 bytes
. 2016-01-07 14:46:48.841 Looking for incoming data
. 2016-01-07 14:46:48.841 Looking for network events
. 2016-01-07 14:46:48.841 Detected network event
. 2016-01-07 14:46:48.841 Enumerating network events for socket 1084
. 2016-01-07 14:46:48.841 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:48.841 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:48.841 Received 46 bytes (0)
. 2016-01-07 14:46:48.841 Read 4 bytes (42 pending)
. 2016-01-07 14:46:48.841 Read 42 bytes (0 pending)
< 2016-01-07 14:46:48.841 Type: SSH_FXP_STATUS, Size: 42, Number: 5644
< 2016-01-07 14:46:48.841 65,00,00,16,0C,00,00,00,01,00,00,00,19,44,69,72,65,63,74,6F,72,79,20,72,65,
< 2016-01-07 14:46:48.841 61,64,69,6E,67,20,69,73,20,64,6F,6E,65,00,00,00,00,
< 2016-01-07 14:46:48.842 Status code: 1
> 2016-01-07 14:46:48.842 Type: SSH_FXP_CLOSE, Size: 41, Number: 5892
> 2016-01-07 14:46:48.842 04,00,00,17,04,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
> 2016-01-07 14:46:48.842 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
. 2016-01-07 14:46:48.842 Sent 45 bytes
. 2016-01-07 14:46:48.842 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.842 Looking for network events
. 2016-01-07 14:46:48.842 Timeout waiting for network events
. 2016-01-07 14:46:48.842 ..;D;0;2015-12-22T09:02:14.000Z;"" [0];"" [0];rw-rw-rw-;1
. 2016-01-07 14:46:49.283 Session upkeep
. 2016-01-07 14:46:49.283 Looking for network events
. 2016-01-07 14:46:49.283 Detected network event
. 2016-01-07 14:46:49.283 Enumerating network events for socket 1084
. 2016-01-07 14:46:49.283 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:49.283 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:49.283 Received 21 bytes (0)
. 2016-01-07 14:46:49.472 Cached directory change via ".." to "/".
. 2016-01-07 14:46:49.472 Getting current directory name.
. 2016-01-07 14:46:49.473 Directory content loaded from cache.
. 2016-01-07 14:46:49.795 Session upkeep
. 2016-01-07 14:46:49.795 Looking for network events
. 2016-01-07 14:46:49.795 Timeout waiting for network events
. 2016-01-07 14:46:49.880 Cached directory change via "upload" to "/upload".
. 2016-01-07 14:46:49.880 Getting current directory name.
. 2016-01-07 14:46:49.881 Listing directory "/upload".
> 2016-01-07 14:46:49.881 Type: SSH_FXP_OPENDIR, Size: 16, Number: 6155
> 2016-01-07 14:46:49.881 0B,00,00,18,0B,00,00,00,07,2F,75,70,6C,6F,61,64,
. 2016-01-07 14:46:49.881 Sent 20 bytes
. 2016-01-07 14:46:49.881 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:49.881 Looking for network events
. 2016-01-07 14:46:49.882 Timeout waiting for network events
. 2016-01-07 14:46:49.882 Read 4 bytes (17 pending)
. 2016-01-07 14:46:49.882 Read 17 bytes (0 pending)
< 2016-01-07 14:46:49.882 Type: SSH_FXP_STATUS, Size: 17, Number: 5892
< 2016-01-07 14:46:49.882 65,00,00,17,04,00,00,00,00,00,00,00,00,00,00,00,00,
. 2016-01-07 14:46:49.882 Discarding reserved response
. 2016-01-07 14:46:49.882 Waiting for another 4 bytes
. 2016-01-07 14:46:49.882 Looking for incoming data
. 2016-01-07 14:46:49.882 Looking for network events
. 2016-01-07 14:46:49.882 Detected network event
. 2016-01-07 14:46:49.882 Enumerating network events for socket 1084
. 2016-01-07 14:46:49.883 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:49.883 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:49.883 Received 45 bytes (0)
. 2016-01-07 14:46:49.883 Read 4 bytes (41 pending)
. 2016-01-07 14:46:49.883 Read 41 bytes (0 pending)
< 2016-01-07 14:46:49.883 Type: SSH_FXP_HANDLE, Size: 41, Number: 6155
< 2016-01-07 14:46:49.883 66,00,00,18,0B,00,00,00,20,30,38,61,36,35,34,38,66,61,36,39,63,66,31,64,37,
< 2016-01-07 14:46:49.883 65,31,33,34,32,33,63,32,61,30,32,30,35,33,63,37,
> 2016-01-07 14:46:49.883 Type: SSH_FXP_READDIR, Size: 41, Number: 6412
> 2016-01-07 14:46:49.883 0C,00,00,19,0C,00,00,00,20,30,38,61,36,35,34,38,66,61,36,39,63,66,31,64,37,
> 2016-01-07 14:46:49.883 65,31,33,34,32,33,63,32,61,30,32,30,35,33,63,37,
. 2016-01-07 14:46:49.883 Sent 45 bytes
. 2016-01-07 14:46:49.883 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:49.883 Looking for network events
. 2016-01-07 14:46:49.883 Timeout waiting for network events
. 2016-01-07 14:46:49.883 Waiting for another 4 bytes
. 2016-01-07 14:46:49.883 Looking for incoming data
. 2016-01-07 14:46:49.883 Looking for network events
. 2016-01-07 14:46:49.889 Detected network event
. 2016-01-07 14:46:49.890 Enumerating network events for socket 1084
. 2016-01-07 14:46:49.890 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:49.890 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:49.890 Received 720 bytes (0)
. 2016-01-07 14:46:49.890 Read 4 bytes (716 pending)
. 2016-01-07 14:46:49.890 Read 716 bytes (0 pending)
问候
问题已在 Apache Mina SSHD 1.1.0 中解决,参见
- https://issues.apache.org/jira/browse/SSHD-622
- https://gitbox.apache.org/repos/asf?p=mina-sshd.git;a=commit;h=2bd4f5709b433495d040249dcb83e5025b6c9227
保留早期版本的解决方案:
Mina SSHD 服务器和 FileZilla 客户端都有部分问题。
在 SFTP 版本 3(FileZilla 使用)中,每个文件的条目都包含结构化元数据和 display-only 字符串(又名 longname
字段),其格式与*nix ls -l
命令。 display-only 字符串不应被解析。
但 FileZilla 会解析它,而不是使用结构化元数据(文件时间戳除外)。 FileZilla 用于实施 SFTP 协议的内部 psftp
进程仅向父 FileZilla 进程(sftp_cmd_ls
函数)提供此信息:
if (ournames[i]->attrs.flags & SSH_FILEXFER_ATTR_ACMODTIME) {
mtime = ournames[i]->attrs.mtime;
}
fzprintf(sftpListentry, "%lu %s", mtime, ournames[i]->longname);
米娜SSHD/SFTP(SftpSubsystem
class),在列出.
和..
meta-directories时,错误地使用了电流display-only 字符串中的文件夹名称和父文件夹名称,而不是 .
和 ..
。它在结构化元数据(shortname
字段)中正确使用 .
和 ..
。
FileZilla 从列表中读取了错误的名称并感到困惑,将条目视为实际的子目录条目,而不是 meta-directories。
在根目录中,.
和..
可能都列为/
。 FileZilla 修剪所有内容,直到最后一个 /
,导致空条目(并且两个 same-named [empty-named] 条目可能合并为一个)。
所以不用
.
..
upload
download
FileZilla 看到
/ [treated as an empty string]
/ [treated as an empty string and ignored as duplicate]
upload
download
在 upload
目录中,.
被列为 upload
,..
被列为 /
(导致空条目)。
所以不用
.
..
FileZilla 看到
upload
/ [treated as an empty string]
WinSCP 相反,从不使用 display-only 字符串来解析 file/directory 名称。并且主要(如果服务器支持,Mina SSHD 所做的)使用 SFTP 版本 4,它甚至不包括 display-only 字符串。
要解决此问题,您需要将 SftpSubsystem.writeDirEntry
方法的 shortName
参数传递给被调用的 .getLongName
方法。并修改 .getLongName
以在字符串中使用 shortName
returns 而不是 getShortName(f)
.
请参阅下面的 SftpSubsystem
修改代码,其中包含描述更改的注释。代码来自Mina SSHD version 1.0
protected void writeDirEntry(int id, DirectoryHandle dir, Buffer buffer, int index, Path f, String shortName, LinkOption... options) throws IOException {
...
if (version == SFTP_V3) {
// added shortName argument
String longName = getLongName(f, options, shortName);
} else {
...
}
// added shortName parameter
protected String getLongName(Path f, LinkOption... options, String shortName) throws IOException {
// added shortName argument
return getLongName(f, true, options, shortName);
}
// added shortName parameter
private String getLongName(Path f, boolean sendAttrs, LinkOption... options, String shortName) throws IOException {
...
// added shortName argument
return getLongName(f, attributes, shortName);
}
// added shortName parameter
private String getLongName(Path f, Map<String, ?> attributes, String shortName) throws IOException {
...
return (SftpHelper.getBool(isDirectory) ? "d" : (SftpHelper.getBool(isLink) ? "l" : "-"))
+ PosixFilePermissions.toString(perms) + " "
+ (attributes.containsKey("nlink") ? attributes.get("nlink") : "1")
+ " " + username + " " + group + " " + lengthString + " "
+ UnixDateFormat.getUnixDate((FileTime) attributes.get("lastModifiedTime"))
// using shortName instead of getShortName(f)
+ " " + shortName;
}
// + you need to modify sendPath to pass getShortName(f)
// to its call to getLongName
我不会Java,所以请原谅任何错误的代码。
考虑将错误报告给 Mina SSHD 项目。 Link这里的问题,如果你这样做。
我使用 Apache Mina SSHD 将 SSH 服务器设置为 SFTP 服务器。我实现了自己的 FileSystemFactory
,以便为登录的用户创建特定目录。当我使用 FileZilla 打开与服务器的连接时,目录结构显示错误。
在根目录视图中,显示一个空文件夹。这个不存在。应该只有两个目录。 "Upload" 和 "Download".
当我打开上传目录时,我再次看到一个空目录,不应该显示,因为它不存在。此外,还显示了另一个上传目录。我无法打开它,因为它说 /upload/upload 不存在,这是真的,但我不明白为什么会显示它。
当我连接 WinSCP 时,我没有得到这个显示错误。有谁知道为什么会这样或者怎么解决?
编辑:
FileSystemFactory
实施:
public class CustomFileSystemFactory implements FileSystemFactory {
private String defaultHomeDir;
private FileSystem fileSystem;
public CustomFileSystemFactory(String defaultHomeDir){
this.defaultHomeDir = defaultHomeDir;
}
public String getDefaultHome(){
return defaultHomeDir;
}
public FileSystem getFileSystem(){
return fileSystem;
}
@Override
public FileSystem createFileSystem(Session session) throws IOException {
Path dir = computeRootDir(session.getUsername());
if (dir == null) {
throw new InvalidPathException(session.getUsername(), "Cannot resolve home directory");
}
if(!Files.exists(dir)){
Files.createDirectory(dir);
}
setupFolders(session.getUsername());
FileSystem fileSystem = new RootedFileSystemProvider().newFileSystem(dir, Collections.emptyMap());
return fileSystem;
}
protected Path computeRootDir(String username){
Path path = Paths.get(defaultHomeDir + Utils.getPrincipalExtId(username) + "/");
return path;
}
protected void setupFolders(String username) throws IOException {
Path homeDir = computeRootDir(username);
File uploadFolder = new File(homeDir + "/upload/");
File downloadFolder = new File(homeDir + "/download/");
if(!uploadFolder.exists()){
uploadFolder.mkdirs();
}
if(!downloadFolder.exists()){
downloadFolder.mkdirs();
}
}
}
这是调试级别 2 上的 WinSCP 日志:
. 2016-01-07 14:46:46.909 Listing directory "/".
> 2016-01-07 14:46:46.909 Type: SSH_FXP_OPENDIR, Size: 10, Number: 4107
> 2016-01-07 14:46:46.909 0B,00,00,10,0B,00,00,00,01,2F,
. 2016-01-07 14:46:46.909 Sent 14 bytes
. 2016-01-07 14:46:46.909 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.909 Looking for network events
. 2016-01-07 14:46:46.909 Timeout waiting for network events
. 2016-01-07 14:46:46.909 Waiting for another 4 bytes
. 2016-01-07 14:46:46.909 Looking for incoming data
. 2016-01-07 14:46:46.909 Looking for network events
. 2016-01-07 14:46:46.913 Detected network event
. 2016-01-07 14:46:46.913 Enumerating network events for socket 1084
. 2016-01-07 14:46:46.913 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:46.913 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:46.913 Received 45 bytes (0)
. 2016-01-07 14:46:46.913 Read 4 bytes (41 pending)
. 2016-01-07 14:46:46.913 Read 41 bytes (0 pending)
< 2016-01-07 14:46:46.913 Type: SSH_FXP_HANDLE, Size: 41, Number: 4107
< 2016-01-07 14:46:46.913 66,00,00,10,0B,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
< 2016-01-07 14:46:46.913 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
> 2016-01-07 14:46:46.913 Type: SSH_FXP_READDIR, Size: 41, Number: 4364
> 2016-01-07 14:46:46.913 0C,00,00,11,0C,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
> 2016-01-07 14:46:46.913 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
. 2016-01-07 14:46:46.913 Sent 45 bytes
. 2016-01-07 14:46:46.914 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.914 Looking for network events
. 2016-01-07 14:46:46.914 Timeout waiting for network events
. 2016-01-07 14:46:46.914 Waiting for another 4 bytes
. 2016-01-07 14:46:46.914 Looking for incoming data
. 2016-01-07 14:46:46.914 Looking for network events
. 2016-01-07 14:46:46.924 Detected network event
. 2016-01-07 14:46:46.924 Enumerating network events for socket 1084
. 2016-01-07 14:46:46.924 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:46.924 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:46.925 Received 1113 bytes (0)
. 2016-01-07 14:46:46.925 Read 4 bytes (1109 pending)
. 2016-01-07 14:46:46.925 Read 1109 bytes (0 pending)
< 2016-01-07 14:46:46.925 Type: SSH_FXP_NAME, Size: 1109, Number: 4364
< 2016-01-07 14:46:46.925 68,00,00,11,0C,00,00,00,03,00,00,00,01,2E,00,00,00,7C,02,00,00,41,B6,00,00,
< 2016-01-07 14:46:46.925 00,00,56,79,11,96,00,00,00,00,56,79,11,96,00,00,00,00,56,79,11,96,00,00,01,
< 2016-01-07 14:46:46.925 37,00,00,00,07,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,1C,56,4F,52,44,
< 2016-01-07 14:46:46.925 45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,
< 2016-01-07 14:46:46.925 00,00,00,00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,
< 2016-01-07 14:46:46.925 52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,1F,01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,
< 2016-01-07 14:46:46.925 53,54,45,4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,14,4E,54,2D,41,55,
< 2016-01-07 14:46:46.925 54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,03,00,12,
< 2016-01-07 14:46:46.925 00,A9,00,00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,42,65,6E,75,74,7A,
< 2016-01-07 14:46:46.925 65,72,00,00,00,00,00,00,00,00,00,13,01,BF,00,00,00,27,4E,54,2D,41,55,54,4F,
< 2016-01-07 14:46:46.925 52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,
< 2016-01-07 14:46:46.925 65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,00,00,00,00,00,27,4E,54,
< 2016-01-07 14:46:46.925 2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,
< 2016-01-07 14:46:46.925 72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,08,64,6F,77,6E,6C,6F,61,64,00,
< 2016-01-07 14:46:46.925 00,00,7C,02,00,00,41,B6,00,00,00,00,56,8E,52,55,00,00,00,00,56,8E,52,55,00,
< 2016-01-07 14:46:46.925 00,00,00,56,8E,52,55,00,00,01,54,00,00,00,08,00,00,00,00,00,00,00,03,00,1F,
< 2016-01-07 14:46:46.925 01,FF,00,00,00,0D,44,55,53,5C,6E,6D,65,63,6B,6D,61,6E,6E,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,1F,01,FF,00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,
< 2016-01-07 14:46:46.925 6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,0B,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,
< 2016-01-07 14:46:46.925 72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,14,4E,54,
< 2016-01-07 14:46:46.925 2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 0B,00,00,00,00,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,
< 2016-01-07 14:46:46.925 53,54,45,4D,00,00,00,00,00,00,00,03,00,12,00,A9,00,00,00,15,56,4F,52,44,45,
< 2016-01-07 14:46:46.925 46,49,4E,49,45,52,54,5C,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,00,00,
< 2016-01-07 14:46:46.925 13,01,BF,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,
< 2016-01-07 14:46:46.925 65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,0B,00,01,00,00,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,
< 2016-01-07 14:46:46.925 5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,
< 2016-01-07 14:46:46.925 72,00,00,00,06,75,70,6C,6F,61,64,00,00,00,7C,02,00,00,41,B6,00,00,00,00,56,
< 2016-01-07 14:46:46.925 8E,51,ED,00,00,00,00,56,8E,51,ED,00,00,00,00,56,8E,51,ED,00,00,01,37,00,00,
< 2016-01-07 14:46:46.925 00,07,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,1C,56,4F,52,44,45,46,49,
< 2016-01-07 14:46:46.925 4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,
< 2016-01-07 14:46:46.925 00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,
< 2016-01-07 14:46:46.925 41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,00,00,1F,
< 2016-01-07 14:46:46.925 01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,
< 2016-01-07 14:46:46.925 4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,14,4E,54,2D,41,55,54,4F,52,
< 2016-01-07 14:46:46.925 49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,03,00,12,00,A9,00,
< 2016-01-07 14:46:46.925 00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,42,65,6E,75,74,7A,65,72,00,
< 2016-01-07 14:46:46.925 00,00,00,00,00,00,00,00,13,01,BF,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,
< 2016-01-07 14:46:46.925 C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,
< 2016-01-07 14:46:46.925 74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,00,00,00,00,00,27,4E,54,2D,41,55,
< 2016-01-07 14:46:46.926 54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,74,65,
< 2016-01-07 14:46:46.926 20,42,65,6E,75,74,7A,65,72,
> 2016-01-07 14:46:46.926 Type: SSH_FXP_READDIR, Size: 41, Number: 4620
> 2016-01-07 14:46:46.926 0C,00,00,12,0C,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
> 2016-01-07 14:46:46.926 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
. 2016-01-07 14:46:46.926 Sent 45 bytes
. 2016-01-07 14:46:46.926 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.926 Looking for network events
. 2016-01-07 14:46:46.926 Timeout waiting for network events
. 2016-01-07 14:46:46.926 Read file '.' from listing
. 2016-01-07 14:46:46.926 Read file 'download' from listing
. 2016-01-07 14:46:46.926 Read file 'upload' from listing
. 2016-01-07 14:46:46.926 Waiting for another 4 bytes
. 2016-01-07 14:46:46.926 Looking for incoming data
. 2016-01-07 14:46:46.926 Looking for network events
. 2016-01-07 14:46:46.926 Detected network event
. 2016-01-07 14:46:46.926 Enumerating network events for socket 1084
. 2016-01-07 14:46:46.926 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:46.926 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:46.926 Received 46 bytes (0)
. 2016-01-07 14:46:46.926 Read 4 bytes (42 pending)
. 2016-01-07 14:46:46.926 Read 42 bytes (0 pending)
< 2016-01-07 14:46:46.926 Type: SSH_FXP_STATUS, Size: 42, Number: 4620
< 2016-01-07 14:46:46.926 65,00,00,12,0C,00,00,00,01,00,00,00,19,44,69,72,65,63,74,6F,72,79,20,72,65,
< 2016-01-07 14:46:46.926 61,64,69,6E,67,20,69,73,20,64,6F,6E,65,00,00,00,00,
< 2016-01-07 14:46:46.926 Status code: 1
> 2016-01-07 14:46:46.926 Type: SSH_FXP_CLOSE, Size: 41, Number: 4868
> 2016-01-07 14:46:46.926 04,00,00,13,04,00,00,00,20,34,34,30,63,33,34,36,32,62,30,34,65,39,37,32,61,
> 2016-01-07 14:46:46.926 34,39,34,62,62,31,30,64,36,65,62,61,35,65,61,33,
. 2016-01-07 14:46:46.926 Sent 45 bytes
. 2016-01-07 14:46:46.926 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:46.926 Looking for network events
. 2016-01-07 14:46:46.926 Timeout waiting for network events
. 2016-01-07 14:46:46.927 download;D;0;2016-01-07T11:56:05.000Z;"" [0];"" [0];rw-rw-rw-;1
. 2016-01-07 14:46:46.927 upload;D;0;2016-01-07T11:54:21.000Z;"" [0];"" [0];rw-rw-rw-;1
. 2016-01-07 14:46:47.009 Startup conversation with host finished.
. 2016-01-07 14:46:47.122 Session upkeep
. 2016-01-07 14:46:47.122 Looking for network events
. 2016-01-07 14:46:47.122 Detected network event
. 2016-01-07 14:46:47.122 Enumerating network events for socket 1084
. 2016-01-07 14:46:47.122 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:47.122 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:47.122 Received 21 bytes (0)
. 2016-01-07 14:46:47.124 Session upkeep
. 2016-01-07 14:46:47.124 Looking for network events
. 2016-01-07 14:46:47.124 Timeout waiting for network events
. 2016-01-07 14:46:47.257 Session upkeep
. 2016-01-07 14:46:47.257 Looking for network events
. 2016-01-07 14:46:47.257 Timeout waiting for network events
. 2016-01-07 14:46:47.768 Session upkeep
. 2016-01-07 14:46:47.768 Looking for network events
. 2016-01-07 14:46:47.768 Timeout waiting for network events
. 2016-01-07 14:46:48.267 Session upkeep
. 2016-01-07 14:46:48.267 Looking for network events
. 2016-01-07 14:46:48.267 Timeout waiting for network events
. 2016-01-07 14:46:48.781 Session upkeep
. 2016-01-07 14:46:48.782 Looking for network events
. 2016-01-07 14:46:48.782 Timeout waiting for network events
. 2016-01-07 14:46:48.832 Cached directory change via "download" to "/download".
. 2016-01-07 14:46:48.832 Getting current directory name.
. 2016-01-07 14:46:48.832 Listing directory "/download".
> 2016-01-07 14:46:48.832 Type: SSH_FXP_OPENDIR, Size: 18, Number: 5131
> 2016-01-07 14:46:48.832 0B,00,00,14,0B,00,00,00,09,2F,64,6F,77,6E,6C,6F,61,64,
. 2016-01-07 14:46:48.832 Sent 22 bytes
. 2016-01-07 14:46:48.832 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.832 Looking for network events
. 2016-01-07 14:46:48.834 Timeout waiting for network events
. 2016-01-07 14:46:48.834 Read 4 bytes (17 pending)
. 2016-01-07 14:46:48.834 Read 17 bytes (0 pending)
< 2016-01-07 14:46:48.834 Type: SSH_FXP_STATUS, Size: 17, Number: 4868
< 2016-01-07 14:46:48.834 65,00,00,13,04,00,00,00,00,00,00,00,00,00,00,00,00,
. 2016-01-07 14:46:48.834 Discarding reserved response
. 2016-01-07 14:46:48.834 Waiting for another 4 bytes
. 2016-01-07 14:46:48.834 Looking for incoming data
. 2016-01-07 14:46:48.834 Looking for network events
. 2016-01-07 14:46:48.834 Detected network event
. 2016-01-07 14:46:48.834 Enumerating network events for socket 1084
. 2016-01-07 14:46:48.834 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:48.834 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:48.834 Received 45 bytes (0)
. 2016-01-07 14:46:48.834 Read 4 bytes (41 pending)
. 2016-01-07 14:46:48.834 Read 41 bytes (0 pending)
< 2016-01-07 14:46:48.834 Type: SSH_FXP_HANDLE, Size: 41, Number: 5131
< 2016-01-07 14:46:48.834 66,00,00,14,0B,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
< 2016-01-07 14:46:48.834 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
> 2016-01-07 14:46:48.834 Type: SSH_FXP_READDIR, Size: 41, Number: 5388
> 2016-01-07 14:46:48.834 0C,00,00,15,0C,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
> 2016-01-07 14:46:48.834 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
. 2016-01-07 14:46:48.835 Sent 45 bytes
. 2016-01-07 14:46:48.835 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.835 Looking for network events
. 2016-01-07 14:46:48.835 Timeout waiting for network events
. 2016-01-07 14:46:48.835 Waiting for another 4 bytes
. 2016-01-07 14:46:48.835 Looking for incoming data
. 2016-01-07 14:46:48.835 Looking for network events
. 2016-01-07 14:46:48.840 Detected network event
. 2016-01-07 14:46:48.840 Enumerating network events for socket 1084
. 2016-01-07 14:46:48.840 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:48.840 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:48.840 Received 749 bytes (0)
. 2016-01-07 14:46:48.840 Read 4 bytes (745 pending)
. 2016-01-07 14:46:48.840 Read 745 bytes (0 pending)
< 2016-01-07 14:46:48.840 Type: SSH_FXP_NAME, Size: 745, Number: 5388
< 2016-01-07 14:46:48.840 68,00,00,15,0C,00,00,00,02,00,00,00,01,2E,00,00,00,7C,02,00,00,41,B6,00,00,
< 2016-01-07 14:46:48.840 00,00,56,8E,52,55,00,00,00,00,56,8E,52,55,00,00,00,00,56,8E,52,55,00,00,01,
< 2016-01-07 14:46:48.840 54,00,00,00,08,00,00,00,00,00,00,00,03,00,1F,01,FF,00,00,00,0D,44,55,53,5C,
< 2016-01-07 14:46:48.840 6E,6D,65,63,6B,6D,61,6E,6E,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,1C,
< 2016-01-07 14:46:48.840 56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,
< 2016-01-07 14:46:48.840 72,65,6E,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,52,44,45,46,
< 2016-01-07 14:46:48.840 49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,6E,00,00,00,
< 2016-01-07 14:46:48.840 00,00,00,00,00,00,1F,01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,
< 2016-01-07 14:46:48.840 54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,14,4E,
< 2016-01-07 14:46:48.840 54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,
< 2016-01-07 14:46:48.840 00,03,00,12,00,A9,00,00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,42,65,
< 2016-01-07 14:46:48.840 6E,75,74,7A,65,72,00,00,00,00,00,00,00,00,00,13,01,BF,00,00,00,27,4E,54,2D,
< 2016-01-07 14:46:48.840 41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,7A,69,65,72,
< 2016-01-07 14:46:48.840 74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,00,00,00,00,
< 2016-01-07 14:46:48.840 00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,
< 2016-01-07 14:46:48.840 69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,02,2E,2E,00,00,00,
< 2016-01-07 14:46:48.840 7C,02,00,00,41,B6,00,00,00,00,56,79,11,96,00,00,00,00,56,79,11,96,00,00,00,
< 2016-01-07 14:46:48.840 00,56,79,11,96,00,00,01,37,00,00,00,07,00,00,00,00,00,00,00,00,00,1F,01,FF,
< 2016-01-07 14:46:48.840 00,00,00,1C,56,4F,52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,
< 2016-01-07 14:46:48.840 72,61,74,6F,72,65,6E,00,00,00,00,00,00,00,0B,00,00,00,00,00,00,00,1C,56,4F,
< 2016-01-07 14:46:48.840 52,44,45,46,49,4E,49,45,52,54,5C,41,64,6D,69,6E,69,73,74,72,61,74,6F,72,65,
< 2016-01-07 14:46:48.840 6E,00,00,00,00,00,00,00,00,00,1F,01,FF,00,00,00,14,4E,54,2D,41,55,54,4F,52,
< 2016-01-07 14:46:48.840 49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,00,00,00,00,00,0B,00,00,00,00,00,
< 2016-01-07 14:46:48.840 00,00,14,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,53,59,53,54,45,4D,00,00,
< 2016-01-07 14:46:48.840 00,00,00,00,00,03,00,12,00,A9,00,00,00,15,56,4F,52,44,45,46,49,4E,49,45,52,
< 2016-01-07 14:46:48.840 54,5C,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,00,00,13,01,BF,00,00,00,
< 2016-01-07 14:46:48.840 27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,6E,74,69,66,69,
< 2016-01-07 14:46:48.840 7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,00,00,00,00,00,00,00,0B,00,01,
< 2016-01-07 14:46:48.840 00,00,00,00,00,27,4E,54,2D,41,55,54,4F,52,49,54,C3,84,54,5C,41,75,74,68,65,
< 2016-01-07 14:46:48.841 6E,74,69,66,69,7A,69,65,72,74,65,20,42,65,6E,75,74,7A,65,72,
> 2016-01-07 14:46:48.841 Type: SSH_FXP_READDIR, Size: 41, Number: 5644
> 2016-01-07 14:46:48.841 0C,00,00,16,0C,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
> 2016-01-07 14:46:48.841 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
. 2016-01-07 14:46:48.841 Sent 45 bytes
. 2016-01-07 14:46:48.841 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.841 Looking for network events
. 2016-01-07 14:46:48.841 Timeout waiting for network events
. 2016-01-07 14:46:48.841 Read file '.' from listing
. 2016-01-07 14:46:48.841 Read file '..' from listing
. 2016-01-07 14:46:48.841 Waiting for another 4 bytes
. 2016-01-07 14:46:48.841 Looking for incoming data
. 2016-01-07 14:46:48.841 Looking for network events
. 2016-01-07 14:46:48.841 Detected network event
. 2016-01-07 14:46:48.841 Enumerating network events for socket 1084
. 2016-01-07 14:46:48.841 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:48.841 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:48.841 Received 46 bytes (0)
. 2016-01-07 14:46:48.841 Read 4 bytes (42 pending)
. 2016-01-07 14:46:48.841 Read 42 bytes (0 pending)
< 2016-01-07 14:46:48.841 Type: SSH_FXP_STATUS, Size: 42, Number: 5644
< 2016-01-07 14:46:48.841 65,00,00,16,0C,00,00,00,01,00,00,00,19,44,69,72,65,63,74,6F,72,79,20,72,65,
< 2016-01-07 14:46:48.841 61,64,69,6E,67,20,69,73,20,64,6F,6E,65,00,00,00,00,
< 2016-01-07 14:46:48.842 Status code: 1
> 2016-01-07 14:46:48.842 Type: SSH_FXP_CLOSE, Size: 41, Number: 5892
> 2016-01-07 14:46:48.842 04,00,00,17,04,00,00,00,20,30,61,33,38,32,30,37,31,37,64,61,65,34,34,39,61,
> 2016-01-07 14:46:48.842 30,31,66,36,32,65,35,61,33,34,65,34,30,33,39,34,
. 2016-01-07 14:46:48.842 Sent 45 bytes
. 2016-01-07 14:46:48.842 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:48.842 Looking for network events
. 2016-01-07 14:46:48.842 Timeout waiting for network events
. 2016-01-07 14:46:48.842 ..;D;0;2015-12-22T09:02:14.000Z;"" [0];"" [0];rw-rw-rw-;1
. 2016-01-07 14:46:49.283 Session upkeep
. 2016-01-07 14:46:49.283 Looking for network events
. 2016-01-07 14:46:49.283 Detected network event
. 2016-01-07 14:46:49.283 Enumerating network events for socket 1084
. 2016-01-07 14:46:49.283 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:49.283 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:49.283 Received 21 bytes (0)
. 2016-01-07 14:46:49.472 Cached directory change via ".." to "/".
. 2016-01-07 14:46:49.472 Getting current directory name.
. 2016-01-07 14:46:49.473 Directory content loaded from cache.
. 2016-01-07 14:46:49.795 Session upkeep
. 2016-01-07 14:46:49.795 Looking for network events
. 2016-01-07 14:46:49.795 Timeout waiting for network events
. 2016-01-07 14:46:49.880 Cached directory change via "upload" to "/upload".
. 2016-01-07 14:46:49.880 Getting current directory name.
. 2016-01-07 14:46:49.881 Listing directory "/upload".
> 2016-01-07 14:46:49.881 Type: SSH_FXP_OPENDIR, Size: 16, Number: 6155
> 2016-01-07 14:46:49.881 0B,00,00,18,0B,00,00,00,07,2F,75,70,6C,6F,61,64,
. 2016-01-07 14:46:49.881 Sent 20 bytes
. 2016-01-07 14:46:49.881 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:49.881 Looking for network events
. 2016-01-07 14:46:49.882 Timeout waiting for network events
. 2016-01-07 14:46:49.882 Read 4 bytes (17 pending)
. 2016-01-07 14:46:49.882 Read 17 bytes (0 pending)
< 2016-01-07 14:46:49.882 Type: SSH_FXP_STATUS, Size: 17, Number: 5892
< 2016-01-07 14:46:49.882 65,00,00,17,04,00,00,00,00,00,00,00,00,00,00,00,00,
. 2016-01-07 14:46:49.882 Discarding reserved response
. 2016-01-07 14:46:49.882 Waiting for another 4 bytes
. 2016-01-07 14:46:49.882 Looking for incoming data
. 2016-01-07 14:46:49.882 Looking for network events
. 2016-01-07 14:46:49.882 Detected network event
. 2016-01-07 14:46:49.882 Enumerating network events for socket 1084
. 2016-01-07 14:46:49.883 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:49.883 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:49.883 Received 45 bytes (0)
. 2016-01-07 14:46:49.883 Read 4 bytes (41 pending)
. 2016-01-07 14:46:49.883 Read 41 bytes (0 pending)
< 2016-01-07 14:46:49.883 Type: SSH_FXP_HANDLE, Size: 41, Number: 6155
< 2016-01-07 14:46:49.883 66,00,00,18,0B,00,00,00,20,30,38,61,36,35,34,38,66,61,36,39,63,66,31,64,37,
< 2016-01-07 14:46:49.883 65,31,33,34,32,33,63,32,61,30,32,30,35,33,63,37,
> 2016-01-07 14:46:49.883 Type: SSH_FXP_READDIR, Size: 41, Number: 6412
> 2016-01-07 14:46:49.883 0C,00,00,19,0C,00,00,00,20,30,38,61,36,35,34,38,66,61,36,39,63,66,31,64,37,
> 2016-01-07 14:46:49.883 65,31,33,34,32,33,63,32,61,30,32,30,35,33,63,37,
. 2016-01-07 14:46:49.883 Sent 45 bytes
. 2016-01-07 14:46:49.883 There are 0 bytes remaining in the send buffer
. 2016-01-07 14:46:49.883 Looking for network events
. 2016-01-07 14:46:49.883 Timeout waiting for network events
. 2016-01-07 14:46:49.883 Waiting for another 4 bytes
. 2016-01-07 14:46:49.883 Looking for incoming data
. 2016-01-07 14:46:49.883 Looking for network events
. 2016-01-07 14:46:49.889 Detected network event
. 2016-01-07 14:46:49.890 Enumerating network events for socket 1084
. 2016-01-07 14:46:49.890 Enumerated 1 network events making 1 cumulative events for socket 1084
. 2016-01-07 14:46:49.890 Handling network read event on socket 1084 with error 0
. 2016-01-07 14:46:49.890 Received 720 bytes (0)
. 2016-01-07 14:46:49.890 Read 4 bytes (716 pending)
. 2016-01-07 14:46:49.890 Read 716 bytes (0 pending)
问候
问题已在 Apache Mina SSHD 1.1.0 中解决,参见
- https://issues.apache.org/jira/browse/SSHD-622
- https://gitbox.apache.org/repos/asf?p=mina-sshd.git;a=commit;h=2bd4f5709b433495d040249dcb83e5025b6c9227
保留早期版本的解决方案:
Mina SSHD 服务器和 FileZilla 客户端都有部分问题。
在 SFTP 版本 3(FileZilla 使用)中,每个文件的条目都包含结构化元数据和 display-only 字符串(又名 longname
字段),其格式与*nix ls -l
命令。 display-only 字符串不应被解析。
但 FileZilla 会解析它,而不是使用结构化元数据(文件时间戳除外)。 FileZilla 用于实施 SFTP 协议的内部 psftp
进程仅向父 FileZilla 进程(sftp_cmd_ls
函数)提供此信息:
if (ournames[i]->attrs.flags & SSH_FILEXFER_ATTR_ACMODTIME) {
mtime = ournames[i]->attrs.mtime;
}
fzprintf(sftpListentry, "%lu %s", mtime, ournames[i]->longname);
米娜SSHD/SFTP(SftpSubsystem
class),在列出.
和..
meta-directories时,错误地使用了电流display-only 字符串中的文件夹名称和父文件夹名称,而不是 .
和 ..
。它在结构化元数据(shortname
字段)中正确使用 .
和 ..
。
FileZilla 从列表中读取了错误的名称并感到困惑,将条目视为实际的子目录条目,而不是 meta-directories。
在根目录中,.
和..
可能都列为/
。 FileZilla 修剪所有内容,直到最后一个 /
,导致空条目(并且两个 same-named [empty-named] 条目可能合并为一个)。
所以不用
.
..
upload
download
FileZilla 看到
/ [treated as an empty string]
/ [treated as an empty string and ignored as duplicate]
upload
download
在 upload
目录中,.
被列为 upload
,..
被列为 /
(导致空条目)。
所以不用
.
..
FileZilla 看到
upload
/ [treated as an empty string]
WinSCP 相反,从不使用 display-only 字符串来解析 file/directory 名称。并且主要(如果服务器支持,Mina SSHD 所做的)使用 SFTP 版本 4,它甚至不包括 display-only 字符串。
要解决此问题,您需要将 SftpSubsystem.writeDirEntry
方法的 shortName
参数传递给被调用的 .getLongName
方法。并修改 .getLongName
以在字符串中使用 shortName
returns 而不是 getShortName(f)
.
请参阅下面的 SftpSubsystem
修改代码,其中包含描述更改的注释。代码来自Mina SSHD version 1.0
protected void writeDirEntry(int id, DirectoryHandle dir, Buffer buffer, int index, Path f, String shortName, LinkOption... options) throws IOException {
...
if (version == SFTP_V3) {
// added shortName argument
String longName = getLongName(f, options, shortName);
} else {
...
}
// added shortName parameter
protected String getLongName(Path f, LinkOption... options, String shortName) throws IOException {
// added shortName argument
return getLongName(f, true, options, shortName);
}
// added shortName parameter
private String getLongName(Path f, boolean sendAttrs, LinkOption... options, String shortName) throws IOException {
...
// added shortName argument
return getLongName(f, attributes, shortName);
}
// added shortName parameter
private String getLongName(Path f, Map<String, ?> attributes, String shortName) throws IOException {
...
return (SftpHelper.getBool(isDirectory) ? "d" : (SftpHelper.getBool(isLink) ? "l" : "-"))
+ PosixFilePermissions.toString(perms) + " "
+ (attributes.containsKey("nlink") ? attributes.get("nlink") : "1")
+ " " + username + " " + group + " " + lengthString + " "
+ UnixDateFormat.getUnixDate((FileTime) attributes.get("lastModifiedTime"))
// using shortName instead of getShortName(f)
+ " " + shortName;
}
// + you need to modify sendPath to pass getShortName(f)
// to its call to getLongName
我不会Java,所以请原谅任何错误的代码。
考虑将错误报告给 Mina SSHD 项目。 Link这里的问题,如果你这样做。