Sorry, e-mail is not suitable for debugging - Eclipse/Intellij/NetBeans are...
________________________________ From: waseem.farooqui <waseem.farooqu...@gmail.com> Sent: Wednesday, March 8, 2017 8:05 AM To: dev@mina.apache.org Subject: Re: Apache MINA SSHd default ShellFactory Chocked the resources I am running this code. And change this public boolean authenticate(String username, String password, ServerSession session) { return (GenericUtils.length(username) > 0) && username.equals(password); } by this public boolean authenticate(String username, String password, ServerSession session) { return true; } public static void main(String[] args) throws Exception { int port = 8000; String provider; boolean error = false; String hostKeyType = AbstractGeneratorHostKeyProvider.DEFAULT_ALGORITHM; Map<String, String> options = new LinkedHashMap<>(); int numArgs = GenericUtils.length(args); for (int i = 0; i < numArgs; i++) { String argName = args[i]; if ("-p".equals(argName)) { if (i + 1 >= numArgs) { System.err.println("option requires an argument: " + argName); break; } port = Integer.parseInt(args[++i]); } else if ("-key-type".equals(argName)) { if (i + 1 >= numArgs) { System.err.println("option requires an argument: " + argName); break; } hostKeyType = args[++i].toUpperCase(); } else if ("-io".equals(argName)) { if (i + 1 >= numArgs) { System.err.println("option requires an argument: " + argName); break; } provider = args[++i]; if ("mina".equals(provider)) { System.setProperty(IoServiceFactory.class.getName(), MinaServiceFactory.class.getName()); } else if ("nio2".endsWith(provider)) { System.setProperty(IoServiceFactory.class.getName(), Nio2ServiceFactory.class.getName()); } else { System.err.println("provider should be mina or nio2: " + argName); break; } } else if ("-o".equals(argName)) { if (i + 1 >= numArgs) { System.err.println("option requires and argument: " + argName); error = true; break; } String opt = args[++i]; int idx = opt.indexOf('='); if (idx <= 0) { System.err.println("bad syntax for option: " + opt); error = true; break; } options.put(opt.substring(0, idx), opt.substring(idx + 1)); } else if (argName.startsWith("-")) { System.err.println("illegal option: " + argName); error = true; break; } else { System.err.println("extra argument: " + argName); error = true; break; } } if (error) { System.err.println("usage: sshd [-p port] [-io mina|nio2] [-key-type RSA|DSA|EC] [-o option=value]"); System.exit(-1); } System.err.println("Starting SSHD on port " + port); SshServer sshd = SshServer.setUpDefaultServer(); Map<String, Object> props = sshd.getProperties(); props.putAll(options); setupServerBanner(sshd, options); sshd.setPort(port); AbstractGeneratorHostKeyProvider hostKeyProvider; Path hostKeyFile; if (SecurityUtils.isBouncyCastleRegistered()) { hostKeyFile = new File("key.pem").toPath(); hostKeyProvider = SecurityUtils.createGeneratorHostKeyProvider(hostKeyFile); } else { hostKeyFile = new File("key.ser").toPath(); hostKeyProvider = new SimpleGeneratorHostKeyProvider(hostKeyFile); } hostKeyProvider.setAlgorithm(hostKeyType); List<KeyPair> keys = ValidateUtils.checkNotNullAndNotEmpty(hostKeyProvider.loadKeys(), "Failed to load keys from %s", hostKeyFile); KeyPair kp = keys.get(0); PublicKey pubKey = kp.getPublic(); String keyAlgorithm = pubKey.getAlgorithm(); // force re-generation of host key if not same algorithm if (!Objects.equals(keyAlgorithm, hostKeyProvider.getAlgorithm())) { Files.deleteIfExists(hostKeyFile); hostKeyProvider.clearLoadedKeys(); } sshd.setKeyPairProvider(hostKeyProvider); sshd.setShellFactory(InteractiveProcessShellFactory.INSTANCE); sshd.setPasswordAuthenticator(new PasswordAuthenticator() { @Override public boolean authenticate(String username, String password, ServerSession session) { return true; // return (GenericUtils.length(username) > 0) && username.equals(password); } }); sshd.setPublickeyAuthenticator(AcceptAllPublickeyAuthenticator.INSTANCE); sshd.setTcpipForwardingFilter(AcceptAllForwardingFilter.INSTANCE); sshd.setCommandFactory(new ScpCommandFactory.Builder().withDelegate(new CommandFactory() { @Override public Command createCommand(String command) { return new ProcessShellFactory(GenericUtils.split(command, ' ')).create(); } }).build()); sshd.setSubsystemFactories(Arrays.<NamedFactory<Command>>asList(new SftpSubsystemFactory())); sshd.start(); Thread.sleep(Long.MAX_VALUE); } public static String setupServerBanner(ServerFactoryManager server, Map<String, ?> options) throws IOException { String filePath = GenericUtils.isEmpty(options) ? null : Objects.toString(options.remove(SshConfigFileReader.BANNER_CONFIG_PROP), null); if (GenericUtils.length(filePath) > 0) { if ("none".equals(filePath)) { return null; } Path path = Paths.get(filePath); long fileSize = Files.size(path); ValidateUtils.checkTrue(fileSize > 0L, "No banner contents in file=%s", filePath); StringBuilder sb = new StringBuilder((int) fileSize + Long.SIZE); try (BufferedReader rdr = new BufferedReader(new InputStreamReader(Files.newInputStream(path), StandardCharsets.UTF_8))) { for (String line = rdr.readLine(); line != null; line = rdr.readLine()) { sb.append(line).append('\n'); } } PropertyResolverUtils.updateProperty(server, ServerFactoryManager.WELCOME_BANNER, sb.toString()); } else { PropertyResolverUtils.updateProperty(server, ServerFactoryManager.WELCOME_BANNER, "Welcome to SSHD\n"); } return PropertyResolverUtils.getString(server, ServerFactoryManager.WELCOME_BANNER); } -- View this message in context: http://apache-mina.10907.n7.nabble.com/Apache-MINA-SSHd-default-ShellFactory-Chocked-the-resources-tp52309p52382.html Apache MINA Developer Forum - Apache MINA SSHd default ShellFactory Chocked the resources<http://apache-mina.10907.n7.nabble.com/Apache-MINA-SSHd-default-ShellFactory-Chocked-the-resources-tp52309p52382.html> apache-mina.10907.n7.nabble.com Apache MINA SSHd default ShellFactory Chocked the resources. Hi Devs, I am using Apache MINA server for the ssh server implementation. I basically want to intercept all the commands typed by the... Sent from the Apache MINA Developer Forum mailing list archive at Nabble.com.