example java ssh jsch

java - example - ¿Podemos usar JSch para la comunicación basada en claves SSH?



jsch tunnel java (1)

Es posible. Eche un vistazo a JSch.addIdentity(...)

Esto le permite usar la clave ya sea como matriz de bytes o para leerla desde el archivo.

import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class UserAuthPubKey { public static void main(String[] arg) { try { JSch jsch = new JSch(); String user = "tjill"; String host = "192.18.0.246"; int port = 10022; String privateKey = ".ssh/id_rsa"; jsch.addIdentity(privateKey); System.out.println("identity added "); Session session = jsch.getSession(user, host, port); System.out.println("session created."); // disabling StrictHostKeyChecking may help to make connection but makes it insecure // see http://stackoverflow.com/questions/30178936/jsch-sftp-security-with-session-setconfigstricthostkeychecking-no // // java.util.Properties config = new java.util.Properties(); // config.put("StrictHostKeyChecking", "no"); // session.setConfig(config); session.connect(); System.out.println("session connected....."); Channel channel = session.openChannel("sftp"); channel.setInputStream(System.in); channel.setOutputStream(System.out); channel.connect(); System.out.println("shell channel connected...."); ChannelSftp c = (ChannelSftp) channel; String fileName = "test.txt"; c.put(fileName, "./in/"); c.exit(); System.out.println("done"); } catch (Exception e) { System.err.println(e); } } }

Estoy usando JSch para la comunicación sftp, ahora quiero utilizar facilitar la autenticación basada en claves, mi equipo de red cargó la clave en el equipo del cliente y el servidor una vez y toda la comunicación posterior sería solo del usuario para el que hemos cargado la clave.

sftp -oPort=10022 [email protected]

como [email protected]

al igual que este comando funcionan bien y se conectan al sftp, cómo puedo lograr esta funcionalidad programáticamente.

si no es posible usar JSch, sugiera alguna otra biblioteca. Me encontré con Apache SSHD .