usar jcraft from example ejecutar desde como cliente java command-line ssh jsch

jcraft - ¿Cómo ejecuto comandos SSH en un sistema remoto usando Java?



sftp client java (5)

Soy nuevo en este tipo de aplicaciones Java y busco algún código de muestra sobre cómo conectarme a un servidor remoto usando SSH, ejecutar comandos y obtener una salida utilizando Java como lenguaje de programación.


A continuación se muestra la forma más fácil de SSh en Java. Descargue cualquiera de los archivos en el enlace a continuación y extraiga, luego agregue el archivo jar del archivo extraído y agréguelo a su ruta de compilación del proyecto http://www.ganymed.ethz.ch/ssh2/ y use el siguiente método

public void SSHClient(String serverIp,String command, String usernameString,String password) throws IOException{ System.out.println("inside the ssh function"); try { Connection conn = new Connection(serverIp); conn.connect(); boolean isAuthenticated = conn.authenticateWithPassword(usernameString, password); if (isAuthenticated == false) throw new IOException("Authentication failed."); ch.ethz.ssh2.Session sess = conn.openSession(); sess.execCommand(command); InputStream stdout = new StreamGobbler(sess.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); System.out.println("the output of the command is"); while (true) { String line = br.readLine(); if (line == null) break; System.out.println(line); } System.out.println("ExitCode: " + sess.getExitStatus()); sess.close(); conn.close(); } catch (IOException e) { e.printStackTrace(System.err); } }


Eche un vistazo a Runtime.exec () Javadoc

Process p = Runtime.getRuntime().exec("ssh myhost"); PrintStream out = new PrintStream(p.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); out.println("ls -l /home/me"); while (in.ready()) { String s = in.readLine(); System.out.println(s); } out.println("exit"); p.waitFor();


JSch es una implementación pura de Java de SSH2 que te ayuda a ejecutar comandos en máquinas remotas. Puede encontrarlo here , y hay algunos ejemplos here .

Puedes usar exec.java .


Puede echar un vistazo a este marco basado en Java para la ejecución remota de comandos, incl. a través de SSH: https://github.com/jkovacic/remote-exec Se basa en dos bibliotecas SSH de código abierto, ya sea JSch (para esta implementación incluso se admite una autenticación ECDSA) o Ganymed (una de estas dos bibliotecas será suficiente). A primera vista, puede parecer un poco complejo, tendrás que preparar muchas clases relacionadas con SSH (proporcionando detalles del servidor y del servidor, especificando detalles de encriptación, proporcionando claves privadas compatibles con OpenSSH, etc., pero el SSH en sí es bastante complejo) también). Por otro lado, el diseño modular permite la inclusión simple de más bibliotecas SSH, fácil implementación del procesamiento de salida de otros comandos o incluso clases interactivas, etc.