package com.github.signed.tryanderror.sftp; import org.apache.log4j.PropertyConfigurator; import org.apache.sshd.SshServer; import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.keyprovider.ResourceKeyPairProvider; import org.apache.sshd.server.Command; import org.apache.sshd.server.PasswordAuthenticator; import org.apache.sshd.server.PublickeyAuthenticator; import org.apache.sshd.server.filesystem.NativeFileSystemFactory; import org.apache.sshd.server.session.ServerSession; import org.apache.sshd.server.sftp.SftpSubsystem; import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.io.IOException; import java.security.PublicKey; import java.security.Security; import java.util.Collections; public class MinaServer { public static void main(String[] args) throws IOException { PropertyConfigurator.configure("src/main/resources/log4j.properties"); Security.addProvider(new BouncyCastleProvider()); new MinaServer().start(); } private void start() throws IOException { SshServer sshd = SshServer.setUpDefaultServer(); sshd.setPort(2022); String[] strings = {"mina/hostkey.pem"}; sshd.setKeyPairProvider(new ResourceKeyPairProvider(strings)); sshd.setShellFactory(new SftpSubsystem.Factory()); sshd.setSubsystemFactories(Collections.<NamedFactory<Command>>singletonList(new SftpSubsystem.Factory())); sshd.setPasswordAuthenticator(new LenientPasswordAuthenticator()); sshd.setPublickeyAuthenticator(new LenientPublickeyAuthenticator()); sshd.setFileSystemFactory(new NativeFileSystemFactory() ); sshd.start(); } private static class LenientPublickeyAuthenticator implements PublickeyAuthenticator { @Override public boolean authenticate(String username, PublicKey key, ServerSession session) { return true; } } private static class LenientPasswordAuthenticator implements PasswordAuthenticator { @Override public boolean authenticate(String username, String password, ServerSession session) { return true; } } }