web-dev-qa-db-fra.com

Connexion SSH avec Java

Comment puis-je me connecter à un serveur SSH en Java? Je n'ai pas besoin/je veux un Shell. Je veux simplement me connecter au serveur SSH et obtenir le contenu de, disons, file.txt. Comment puis je faire ça?

33
user348041

Utilisez JSch

import com.jcraft.jsch.*;

import Java.io.InputStream;
import Java.io.InputStreamReader;
import Java.util.Scanner;

/**
 * @author World
 */
public class SSHReadFile {

    public static void main(String args[]) {
        String user = "john";
        String password = "mypassword";
        String Host = "192.168.100.23";
        int port = 22;
        String remoteFile = "/home/john/test.txt";

        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(user, Host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            System.out.println("Establishing Connection...");
            session.connect();
            System.out.println("Connection established.");
            System.out.println("Crating SFTP Channel.");
            ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
            sftpChannel.connect();
            System.out.println("SFTP Channel created.");

            InputStream inputStream = sftpChannel.get(remoteFile);

            try (Scanner scanner = new Scanner(new InputStreamReader(inputStream))) {
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine();
                    System.out.println(line);
                }
            }
        } catch (JSchException | SftpException e) {
            e.printStackTrace();
        }
    }
}

sortie:

Establishing Connection...
Connection established.
Crating SFTP Channel.
SFTP Channel created.
This is content from file /home/john/test.txt
44
World

Java ne le supporte pas nativement, mais vous pouvez utiliser une bibliothèque comme JSch pour le faire

5
Michael Mrozek

Jetez un oeil à Jaramiko .

1
Brian Clapper

Vous devez utiliser une bibliothèque tierce - JSch en fait partie. Google avec "Java ssh "et vous aurez plein d'autres options.

1
Petar Minchev

Vous pouvez vérifier JSSH , qui est une bibliothèque Java SSH).

1
Fortega

http://www.ganymed.ethz.ch/ssh2/ implémente un client ssh2 en Java. Je l'utilise pour la redirection de port.

Pas sûr à 100%, mais je pense que les sockets ont beaucoup à voir avec les connexions ssh, sauf si vous essayez de faire une application de manipulation de commandes préinstallée. Il existe de nombreux packages externes que vous pouvez utiliser pour atteindre cet objectif, mais si vous souhaitez créer votre propre socket, cela nécessitera une grande quantité de lecture et de déchiffrement/cryptage pour y parvenir.

La création de votre propre socket est également dangereuse si elle n'est pas effectuée correctement avec les bons protocoles et spécifications de sécurité, alors méfiez-vous de le faire jusqu'à ce que vous soyez sûr à 100% que vous êtes capable de vous engager à apprendre suffisamment.

0
Taurean Wooley