如何在Java中的Apache Mina Sshd Server中设置根目录

2022-09-04 02:26:24

我使用Apache Mina Sshd API在java中启动本地SFTP服务器。在SFTP客户端中,我使用Jcraft jsch API来创建我的SFTP客户端。我已成功启动服务器。问题是我想写一些单元测试用例来检查客户端是否可以将一些文件放入服务器的根目录中。目前,我的 SFTP 服务器没有任何根目录。所以我想知道,是否有任何方法来设置服务器的根目录。

例如:C:\sftp 如何将此路径设置为我的服务器根 directory.so 然后客户端可以在每次与服务器连接时读取和写入文件。谢谢。

public class SftpServerStarter {

    private SshServer sshd;
    private final static Logger logger = 
        LoggerFactory.getLogger(SftpServerStarter.class);

    public void start(){
        sshd = SshServer.setUpDefaultServer();
        sshd.setPort(22);
        sshd.setHost("localhost");
        sshd.setPasswordAuthenticator(new MyPasswordAuthenticator());
        sshd.setPublickeyAuthenticator(new MyPublickeyAuthenticator());
        sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider());
        sshd.setSubsystemFactories(
            Arrays.<NamedFactory<Command>>asList(new SftpSubsystem.Factory()));
        sshd.setCommandFactory(new ScpCommandFactory());

        try {
            logger.info("Starting ...");
            sshd.start();
            logger.info("Started");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            logger.info("Can not Start Server");
        }
    }
}

答案 1

在较新的 sshd 版本中,您可以使用它并通过方法将其提供给实例。org.apache.sshd.common.file.virtualfs.VirtualFileSystemFactorySshServersetFileSystemFactory

片段:

VirtualFileSystemFactory fileSystemFactory = new VirtualFileSystemFactory();
fileSystemFactory.setDefaultHomeDir("home.directory");
sshd.setFileSystemFactory(fileSystemFactory)

答案 2

在默认情况下,它从名为user.dir

为了更改此设置,您可以覆盖并返回路径。getVirtualUserDir()NativeFileSystemView

    sshd.setFileSystemFactory(new NativeFileSystemFactory() {
        @Override
        public FileSystemView createFileSystemView(final Session session) {
            return new NativeFileSystemView(session.getUsername(), false) {
                @Override
                public String getVirtualUserDir() {
                    return  "C:\\MyRoot";
                }
            };
        };
    });

推荐