2010-07-21 9 views
7

Est-il possible d'établir une connexion SSH à un serveur avec Java?SSH Connexion Java

+2

Check [http://stackoverflow.com/questions/3071760/ssh-connection-with-java/9019095#9019095] – World

+0

FWIW, je pris un coup d'œil sur les listés ci-dessous, et sshtools n'est disponible que sous licence GPL. (jsch est disponible sous BSD et sshJ est disponible sous Apache.) – Mickalot

Répondre

3

jsch et sshJ sont tous deux de bons clients. Personnellement, j'utiliserais sshJ car le code est documenté beaucoup plus complètement.

jsch a une utilisation répandue, y compris dans l'eclipse et l'apache ant. J'ai également eu des problèmes avec les clés privées cryptées jsch et AES, ce qui a nécessité un re-cryptage en 3DES, mais cela pourrait être juste moi.

+0

ok la bibliothèque jsch a bien fonctionné et a été très facile à mettre en œuvre. Merci pour votre réponse. – Benni

1

Pour établir la connexion aux serveurs Java, vous avez besoin d'une implémentation de SSHD (le client ssh ne suffit pas). Vous pouvez essayer Apache SSHD,

http://mina.apache.org/sshd/

Parce que sshd est déjà en cours d'exécution sur la plupart des systèmes, une alternative plus facile est de se connecter au serveur via un tunnel SSH.

2

Oui, c'est possible. Vous pouvez essayer le code suivant:

package mypackage; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.Session; 
import java.io.*; 

public class SSHReadFile 
    { 
    public static void main(String args[]) 
    { 
    String user = "user"; 
    String password = "password"; 
    String host = "yourhostname"; 
    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."); 
     } 
    catch(Exception e){System.err.print(e);} 
    } 
    } 
+0

parfait. travaillé pour moi. –

Questions connexes