2010-07-21 18 views
7

Ist es möglich, eine SSH-Verbindung zu einem Server mit Java zu machen?SSH-Verbindung Java

+2

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

+0

FWIW, nahm ich einen kurzen Blick auf die, die unten aufgeführt, und sshtools ist nur unter einer GPL-Lizenz verfügbar. (jsch ist verfügbar unter BSD und sshJ ist verfügbar unter Apache.) – Mickalot

Antwort

3

jsch und sshJ sind beide gute Kunden. Ich würde persönlich sshJ verwenden, da der Code viel gründlicher dokumentiert ist.

Jsch hat weit verbreitete Verwendung, einschließlich in Eclipse und Apache Ameise. Ich hatte auch Probleme mit JSCH- und AES-verschlüsselten privaten Schlüsseln, die in 3DES neu verschlüsselt werden mussten, aber das könnte nur ich sein.

+0

ok die jsch-Bibliothek hat gut funktioniert und war sehr einfach zu implementieren. Vielen Dank für Ihre Antwort. – Benni

1

Um eine Verbindung zu Java-Servern herzustellen, benötigen Sie eine Implementierung von SSHD (ssh-Client ist nicht genug). Apache SSHD Sie können versuchen,

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

Da sshd bereits läuft auf den meisten Systemen, eine einfachere Alternative ist mit dem Server über einen SSH-Tunnel zu verbinden.

2

Ja, es ist möglich. Sie können den folgenden Code versuchen:

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

perfekt. hat für mich gearbeitet. –