Estoy intentando escribir un programa java que se conectará a través de ssh y hará algunas cosas en un servidor en funcionamiento (redhat linux). Mi caja es Windows. Leí sobre sshj y estoy tratando de hacer que el ejemplo funcione. He trabajado en la mayoría de las dependencias y ahora tengo un error al tratar con las claves públicas/privadas y desafortunadamente tampoco sé mucho (sí, ¡es una tormenta perfecta de novatos!). Aquí está el error:luchando con el ejemplo sshj ('exec'): No se pudo verificar la clave de host `ssh-rsa` con la huella digital
Excepción en hilo net.schmizz.sshj.transport.TransportException "principal": [HOST_KEY_NOT_VERIFIABLE] No se pudo verificar ssh-rsa
clave de host con la huella digital para 5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d
myserver
en el puerto 22
Aquí está el código:
import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.connection.channel.direct.Session.Command;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/** This examples demonstrates how a remote command can be executed. */
public class sshBuddy {
public static void main(String... args)
throws IOException {
final SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
//ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d");
ssh.connect("myserver");
try {
ssh.authPublickey(System.getProperty("myusername"));
final Session session = ssh.startSession();
try {
final Command cmd = session.exec("ping -c 1 google.com");
System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
cmd.join(5, TimeUnit.SECONDS);
System.out.println("\n** exit status: " + cmd.getExitStatus());
} finally {
session.close();
}
} finally {
ssh.disconnect();
}
}
}
¡Cualquier ayuda sería apreciada, gracias!
Esto no es una solución. Básicamente dice que deshabilite la verificación de la clave del host como tal. – Matiss