Ниже приведен код сервера Apache MINA.Работает отлично.Когда я соединяюсь с WinSCP, я ограничен каталогом и не могу вернуться, что хорошо.С другой стороны, когда я соединяюсь с терминалом SSH, я могу возвращаться и пересылать каталоги, чего я не хочу.
Я знаю, что эта строка ограничивает пользователя для WinSCP:
sshd.setFileSystemFactory(
(FileSystemFactory) new VirtualFileSystemFactory(new File("C:/my apps").toPath()));
Используемые версии JAR (понимается, что между выпусками есть большие различия):
- mina-core-2.0.7
- sshd-core-1.7.0
- slf4j-api-1.7.25
- slf4j-jdk-1.7.25
SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(8080);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File("hostkey.ser")));
sshd.setUserAuthFactories(userAuthFactories);
sshd.setCommandFactory(new ScpCommandFactory());
sshd.setSubsystemFactories(sftpCommandFactory);
sshd.setShellFactory(new ProcessShellFactory(new String[] { "cmd" }));
// "/bin/bash", "-i", "-l"
sshd.setFileSystemFactory(
(FileSystemFactory) new VirtualFileSystemFactory(new File("C:/my apps").toPath()));
sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
@Override
public boolean authenticate(String username, String password, ServerSession session) {
if ((username.equals("username")) && (password.equals("password"))) {
return true;
}
return false;
}
});
sshd.start();
while (true);
Мне было интересно, сталкивался ли кто-нибудь с этим и делал ли это в Java, поскольку я ничего не могу найти в API.