当前位置: 首页 > 面试题库 >

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

凤棋
2023-03-14
问题内容

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

例如: C:\ sftp 我如何将此路径设置为服务器的根目录。这样,每次与服务器连接时,客户端都可以对其读写文件。谢谢。

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");
        }
    }
}

问题答案:

在默认情况下,它从名为System的System属性获取根路径。 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";
                }
            };
        };
    });


 类似资料:
  • 我使用Apache Mina Sshd API在Java中启动了一个本地SFTP服务器,在SFTP客户端中使用Jcraft jsch API创建了我的SFTP客户端,我成功地启动了一个服务器,问题是我想编写一些单元测试用例来检查客户端是否可以将一些文件放入服务器的根目录中。目前我的SFTP服务器没有任何根目录,所以我想知道有什么方法可以设置服务器的根目录。 例如:C:\sftp我如何设置这个路径作

  • 问题内容: 我正在用Java做一些Swing GUI,我想我的问题很简单。如何设置鼠标的位置? 问题答案: 您需要使用机器人 此类用于生成本机系统输入事件,用于测试自动化,自运行演示以及需要控制鼠标和键盘的其他应用程序。Robot的主要目的是促进Java平台实现的自动化测试。 使用类生成输入事件与将事件发布到AWT事件队列或AWT组件不同,因为事件是在平台的本机输入队列中生成的。例如,实际上将移动

  • 问题内容: 我变得有点疯狂,因为我找不到在将使用Maven构建的Java War项目中设置angular 4应用程序的指南。这是因为我想将其运行到wildfly服务器中。 有什么帮助吗? 谢谢 问题答案: 我有一个类似的要求,即要有一个源项目,其中要有Java Web服务项目以及angular项目(基于angular- cli的项目),并且maven构建应该在其中包含所有角度文件的情况下进行战争。

  • 问题内容: 我目前有一个App Engine Go应用,其中包含2个项目:和。 我希望能够设置某些变量的值,具体取决于应用程序是按生产还是暂存运行。 应用程序是否可以检测运行在哪个环境中? 谢谢 问题答案: 使用一个环境变量来描述您的应用是在生产中还是在生产中。添加到, 在您的代码中

  • 问题内容: 默认情况下,Jenkins节点上的作业将存储在中。 目前设置为,所以我的工作在。由于Windows的字符数限制为255个,因此我需要作业目录直接位于驱动器的根目录下。 如何将工作区根目录设置为? 问题答案: 在启动Jenkins主节点时,我们必须指定以下参数: 为此,请在中找到配置文件并完成本节。