I. Introducción
JSch biblioteca puede lograr la conexión de Java Linux servidor y comandos de operación, archivos, y soporte para una variedad de modelo de licencia común. URL: http://www.jcraft.com/jsch/
SSH.Net marco similar en C #.
En segundo lugar, el caso
1, el nuevo proyecto Maven, añadir las siguientes dependencias en pom.xml:
<dependencias> <- https: // mvnrepository.com/artifact/com.jcraft/jsch -> <dependency> <groupId> com.jcraft </ groupId> <artifactId> jsch </ artifactId> <versión> 0.1 . 55 </ version> </ dependency> </ dependencias>
2, crear una clase ShellTest, dice lo siguiente:
empaquetar com.test; importar com.jcraft.jsch *. ; importar javax.swing *. ; importación java.io.FilterInputStream; importación java.io.IOException; / ** * @author Sindrol 10/03/2020 11:16 * / público de clase ShellTest { públicas estáticas void main (String [] args) lanza JSchException { JSch jsch = nueva JSch (); // jsch.setKnownHosts ( "C:. \\ \\ XXX Usuarios \\ \\ ssh known_hosts"); Anfitrión String = JOptionPane.showInputDialog ( "Enter hostname", "192.168.213.134" ); int port = 22 ; Usuario Cadena = "raíz" ; Sesión Sesión = jsch.getSession (usuario, host, 22 ); Cadena contraseña = JOptionPane.showInputDialog ( "Enter password", "123456" ); session.setPassword (passwd); session.setUserInfo ( nuevo MyUserInfo ()); session.connect ( 30000 ); Canal Channel = session.openChannel ( "shell" ); // ((ChannelShell) canal). // uso Ventana problema channel.setInputStream ( nueva nueva FilterInputStream (el System.in) { @ Override pública int Read ( byte [] B, Int OFF, int len) lanza IOException { retorno in.read (B, OFF (longitud> 1024 1024? : lEN)); } }); // channel.setInputStream (System.in); channel.setOutputStream (System.out); // eliminar la salida de color de la consola ((ChannelShell) canal) .setPtyType ( "VT102 " ); //((ChannelShell) canal) .setEnv ( "LANG", "zh_CN"); channel.connect (3 * 1000 ); } Pública estática clase MyUserInfo implementos de información del usuario, UIKeyboardInteractive { @ Override pública Cadena getPassword () { retorno nula ; } @ Override pública booleano promptYesNo (String mensaje) { Object [] Opciones = { "sí", "no" }; int foo = JOptionPane.showOptionDialog ( nulo , mensaje, "Warning" , JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, nula , opciones, opciones [0 ]); volver foo == 0 ; } @ Override pública Cadena getPassphrase () { retorno nula ; } @ Override pública booleano promptPassphrase (String mensaje) { retorno falsa ; } @ Override pública booleano promptPassword (String mensaje) { retorno falsa ; } @ Override pública vacío ShowMessage (String mensaje) { JOptionPane.showMessageDialog ( nula , mensaje); } @ Override pública String [] promptKeyboardInteractive (cadena de destino, String nombre, instrucción de cadena, String [] pronta, boolean [] eco) { retorno nula ; } } }
3, ejecute directamente (o etiquetado después de ejecutar ventana Jar cmd) efecto