Je suis nouveau dans ce type d'application Java et je cherche un exemple de code sur la façon de se connecter à un serveur distant en utilisant SSH, d'exécuter des commandes et de récupérer la sortie en utilisant Java comme langage de programmation.
Jetez un œil à 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();
Vous trouverez ci-dessous le moyen le plus simple d'accéder à SSh en Java. Téléchargez l'un des fichiers dans le lien ci-dessous et extrayez, puis ajoutez le fichier jar à partir du fichier extrait et ajoutez-le à votre chemin de génération du projet http://www.ganymed.ethz.ch/ssh2/ = et utilisez la méthode ci-dessous
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);
}
}
Vous pouvez jeter un œil à ce Java pour l'exécution de commandes à distance, y compris via SSH: https://github.com/jkovacic/remote-exec It s'appuie sur deux bibliothèques SSH open source, soit JSch (pour cette implémentation, même une authentification ECDSA est prise en charge) ou Ganymed (une de ces deux bibliothèques suffira). À première vue, cela peut sembler un peu complexe, vous devrez de nombreuses classes liées à SSH (fournissant le serveur et vos informations utilisateur, spécifiant les détails de chiffrement, fournissant des clés privées compatibles OpenSSH, etc., mais le SSH lui-même est également assez complexe). D'autre part, la conception modulaire permet une inclusion simple de plus Bibliothèques SSH, implémentation facile du traitement de sortie d'autres commandes ou même des classes interactives, etc.
J'ai utilisé du ganymède pour cela il y a quelques années ... http://www.cleondris.ch/opensource/ssh2/