Apache Mina SSHD 1.0.0设置用户目录&映射

时间:2015-10-18 23:45:57

标签: java sftp apache-mina sshd mina

尝试使用Java中嵌入的Apache Mina SSHD为用户设置主目录。

两种解决方案均在1.0 in-中弃用 How to Set Root Directory in Apache Mina Sshd Server in Java
How to override getVirtualUserDir() in Apache Mina sshd-core version 0.14.0

在0.14.0中,以下工作正常:

sshd.setFileSystemFactory(new NativeFileSystemFactory() {
   @Override
   public FileSystemView createFileSystem(final Session session) {
      HashMap<String,String> map = new HashMap<String,String>();
      map.put("/", "/Users/someone/Documents");
      return new NativeFileSystemView(session.getUsername(), map, "/");
   };
});

据我所知:

sshd.setFileSystemFactory(new NativeFileSystemFactory() {
    @Override
    public FileSystem createFileSystem(Session session) {
        // What should I do here?
        return super.createFileSystem(session);
    }
});

2 个答案:

答案 0 :(得分:4)

找到它。
我必须使用VirtualFileSystemFactory

结果如下:

VirtualFileSystemFactory fsFactory = new VirtualFileSystemFactory();
fsFactory.setUserHomeDir(userName, realDirectory);
sshd.setFileSystemFactory(fsFactory);

注意: 如果您正在使用 OS X linux ,请不要忘记chmod您的路径。

答案 1 :(得分:0)

对于v1.2.0(如果是Java 7)/ v1.3.0(如果是Java 8)和 java.nio.file.Path 用法,解决方案可能是:

sshServer.setFileSystemFactory(new VirtualFileSystemFactory(FileSystems.getDefault().getPath(rootDir)));