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 .